如何以相反的顺序循环列表并跳过最后一个元素
How to loop a list in reverse order and skip last element
我知道我可以 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
您需要从 -2
开始,因为 -1
从最后一个元素开始:
for i in x[-2::-1]:
print(i)
或者,您可以将 reversed
与列表切片一起使用:
for i in reversed(x[:-1]):
print(i)
你可以像这样使用双切片
for i in x[::-1][1:]:
print(i)
去掉循环后可以反转:
for i in x[:-1][::1]:
print(i)
涉及列表切片的答案可能是最好的,但也可以用枚举来完成。
x = [1, 2, 3, 4, 5]
for index, value in enumerate(reversed(x)):
val = value-1
if val:
print(val)
同样,切片答案在 "Big O" 意义上更好,但看到一些做事的方法也没什么坏处。
我知道我可以 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
您需要从 -2
开始,因为 -1
从最后一个元素开始:
for i in x[-2::-1]:
print(i)
或者,您可以将 reversed
与列表切片一起使用:
for i in reversed(x[:-1]):
print(i)
你可以像这样使用双切片
for i in x[::-1][1:]:
print(i)
去掉循环后可以反转:
for i in x[:-1][::1]:
print(i)
涉及列表切片的答案可能是最好的,但也可以用枚举来完成。
x = [1, 2, 3, 4, 5]
for index, value in enumerate(reversed(x)):
val = value-1
if val:
print(val)
同样,切片答案在 "Big O" 意义上更好,但看到一些做事的方法也没什么坏处。