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


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


当前回答

要获得一个新的反向列表,应用reversed函数并将项目收集到一个列表中:

>>> xs = [0, 10, 20, 40]
>>> list(reversed(xs))
[40, 20, 10, 0]

在列表中向后迭代:

>>> xs = [0, 10, 20, 40]
>>> for x in reversed(xs):
...     print(x)
40
20
10
0

其他回答

一个干净简单的类对象来解决您的问题。

class lister():
    def reverse(self):
        return  [self[len(self)-e]for e,x in enumerate(self,start=1)]
print(lister.reverse([0, 10, 20, 40]))

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

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

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

另一种方法使用列表理解和abs

array = [0, 10, 20, 40]

reversed_array = [array[abs(indx)] for indx in range(abs(len(array)-1),1)]
            
reversed_array
[40, 20, 10, 0]
>>> L = [1, 2, 3, 4]
>>> L = [L[-i] for i in range(1, len(L) + 1)]
>>> L
[4, 3, 2, 1]
>>> xs = [0, 10, 20, 40]
>>> xs[::-1]
[40, 20, 10, 0]

这里将解释扩展片语法。请参见文档。