Traverse a list in reverse order in Python

Joan Venge picture Joan Venge · Feb 9, 2009 · Viewed 769.7k times · Source

So I can start from len(collection) and end in collection[0].

I also want to be able to access the loop index.

Answer

Greg Hewgill picture Greg Hewgill · Feb 9, 2009

Use the built-in reversed() function:

>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
...     print(i)
... 
baz
bar
foo

To also access the original index, use enumerate() on your list before passing it to reversed():

>>> for i, e in reversed(list(enumerate(a))):
...     print(i, e)
... 
2 baz
1 bar
0 foo

Since enumerate() returns a generator and generators can't be reversed, you need to convert it to a list first.