如何在Python中反向迭代列表?


请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?


当前回答

通过切换相反索引的引用来就地反转:

>>> l = [1,2,3,4,5,6,7]    
>>> for i in range(len(l)//2):
...     l[i], l[-1-i] = l[-1-i], l[i]
...
>>> l
[7, 6, 5, 4, 3, 2, 1]

其他回答

你也可以使用数组索引的逐位补码反向遍历数组:

>>> array = [0, 10, 20, 40]
>>> [array[~i] for i, _ in enumerate(array)]
[40, 20, 10, 0]

不管你做什么,不要这样做;)

array=[0,10,20,40]
for e in reversed(array):
  print e

使用列表。Reverse将列表就地反转:

>>> xs = [0, 10, 20, 40]
>>> xs.reverse()
>>> xs
[40, 20, 10, 0]

使用切片以相反的顺序创建一个新列表:

>>> xs[::-1]
[40, 20, 10, 0]

另一个解决方案是使用numpy。翻一下

import numpy as np
array = [0, 10, 20, 40]
list(np.flip(array))
[40, 20, 10, 0]

组织价值观:

在Python中,列表的顺序也可以通过sort操作,以数字/字母顺序组织变量: 暂时:

print(排序(my_list))

永久的:

my_list.sort(), print(my_list)

你可以用"reverse=True"来排序:

print(sorted(my_list, reverse=True))

or

my_list.sort(reverse=True), print(my_list)

没有组织

也许您不想对值进行排序,而只是将值反向排列。然后我们可以这样做:

print(list(reversed(my_list)))

**数字在列表顺序上优先于字母。Python价值观的组织非常棒。

编辑1:一个错误的版主声称我的答案是一个副本,并删除了我的旧帖子。