如何以相反顺序循环列表并跳过最后一个元素

时间:2018-10-05 01:39:43

标签: python python-3.x list indexing

我知道我可以让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

5 个答案:

答案 0 :(得分:2)

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

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

或者,您可以将reversed与列表切片一起使用:

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

答案 1 :(得分:1)

您可以像这样使用双重切片

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

答案 2 :(得分:0)

在删除循环后可以反转:

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

答案 3 :(得分:0)

涉及列表切片的答案可能是最好的,但也可以通过枚举来完成。

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

同样,从“大O”的角度来看,切片答案更好,但是看到一些做某事的方法也没有什么坏处。

答案 4 :(得分:-2)

您可以使用sorted(x, reverse=True)对列表进行排序,然后使用常规的for循环。