如何在Python中反向遍历列表?所以我可以从集合[len(collection)-1]开始,到集合[0]结束。

我还希望能够访问循环索引。


当前回答

你可以:

for item in my_list[::-1]:
    print item

(或者你想在for循环中做的任何事情。)

[::-1]片在for循环中反转列表(但实际上不会“永久”修改列表)。

其他回答

如果你需要索引,而你的列表很小,最易读的方法是像公认的答案所说的那样做reversed(list(enumerate(your_list))。但这将创建列表的副本,因此如果列表占用了很大一部分内存,则必须从len()-1中减去enumerate(reversed())返回的下索引。

如果你只需要做一次:

a = ['b', 'd', 'c', 'a']

for index, value in enumerate(reversed(a)):
    index = len(a)-1 - index

    do_something(index, value)

或者如果你需要多次这样做,你应该使用生成器:

def enumerate_reversed(lyst):
    for index, value in enumerate(reversed(lyst)):
        index = len(lyst)-1 - index
        yield index, value

for index, value in enumerate_reversed(a):
    do_something(index, value)

你可以使用生成器:

li = [1,2,3,4,5,6]
len_li = len(li)
gen = (len_li-1-i for i in range(len_li))

最后:

for i in gen:
    print(li[i])

希望这对你有帮助。

你可以:

for item in my_list[::-1]:
    print item

(或者你想在for循环中做的任何事情。)

[::-1]片在for循环中反转列表(但实际上不会“永久”修改列表)。

如果你不介意指数为负,你可以这样做:

>>> a = ["foo", "bar", "baz"]
>>> for i in range(len(a)):
...     print(~i, a[~i]))
-1 baz
-2 bar
-3 foo

可以这样做:

for i in range(len(collection)-1, -1, -1):
    print collection[i]

    # print(collection[i]) for python 3. +

所以你的猜测很接近:)有点尴尬,但它基本上是说:从小于len(collection)的1开始,一直到-1之前,一步一步到-1。

仅供参考,帮助函数非常有用,因为它可以让你从Python控制台查看文档,例如:

帮助(范围)