如何倒序循环一个列表并跳过最后一个元素?

4
我知道可以使用for i in x[::-1]来逆序遍历列表。但是如果我想跳过最后一个元素,从高到低遍历呢? for i in x[-1:0:-1] 是不起作用的。
x = [1,2,3,4,5]
=> 4,3,2,1         #  desired

for i in x[-1:-1]:
    print(i)

# it does not work

4
可以使用x[-2::-1] - Loocid
有没有办法在if elif语句中使用缩写而不需要else? - jacobcan118
4个回答

6

你需要从-2开始,因为-1是从最后一个元素开始的:

for i in x[-2::-1]:
    print(i)

另外,你还可以使用列表切片来实现reversed功能:

for i in reversed(x[:-1]):
    print(i)

2
您可以像这样使用双重切片
for i in x[::-1][1:]:
    print(i)

0
可以在循环删除后进行反转:
for i in x[:-1][::1]:
    print(i)

0

涉及列表切片的答案可能是最好的,但也可以使用enumerate完成。

x = [1, 2, 3, 4, 5]
for index, value in enumerate(reversed(x)):
    val = value-1
    if val:
        print(val)

再次强调,在“大 O”意义上,切片的答案更好,但看到几种方法也无妨。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接