Traverse a list in reverse order in Python
Use the built-in reversed()
function:
>>> a = ["foo", "bar", "baz"]>>> for i in reversed(a):... print(i)... bazbarfoo
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 baz1 bar0 foo
Since enumerate()
returns a generator and generators can't be reversed, you need to convert it to a list
first.
It can be done like this:
for i in range(len(collection)-1, -1, -1): print collection[i] # print(collection[i]) for python 3. +
So your guess was pretty close :) A little awkward but it's basically saying: start with 1 less than len(collection)
, keep going until you get to just before -1, by steps of -1.
Fyi, the help
function is very useful as it lets you view the docs for something from the Python console, eg:
help(range)