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


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


当前回答

将你的需求转换成Python的最直接的方法是这样的for语句:

for i in xrange(len(array) - 1, -1, -1):
   print i, array[i]

这是相当神秘的,但可能有用。

其他回答

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

import numpy as np
array = [0, 10, 20, 40]
list(np.flip(array))
[40, 20, 10, 0]
array=[0,10,20,40]
for e in reversed(array):
  print e

问题不是如何反向返回一个列表,而是如何使用示例列表名数组反向返回一个列表。

反转名为“array”的列表使用array.reverse()。

通过使用array[:] = array[::-1]将列表定义为对其本身的切片修改,还可以使用上面描述的非常有用的slice方法来反转列表。

有3种方法可以获得反向列表:

切片方法1:reversed_array = array[-1::-1] 切片方法二: Reversed_array2 = array[::-1] 使用内置函数:reversed_array = array.reverse()

第三个函数实际上颠倒了列表对象。这意味着不维护原始数据的副本。如果您不想维护旧版本,这是一个很好的方法。但如果你想要原始和反转的版本,这似乎不是一个解决方案。

使用反向(数组)可能是最好的方法。

>>> array = [1,2,3,4]
>>> for item in reversed(array):
>>>     print item

如果你需要了解如何实现这个不使用内置反转。

def reverse(a):
    midpoint = len(a)/2
    for item in a[:midpoint]:
        otherside = (len(a) - a.index(item)) - 1
        temp = a[otherside]
        a[otherside] = a[a.index(item)]
        a[a.index(item)] = temp
    return a

这需要O(N)时间。