Why a range_iterator when a range is reversed?
The reversed
function returns an iterator, not a sequence. That's just how it's designed. The range_iterator
you're seeing is essentially iter
called on the reversed range
you seem to want.
To get the reversed sequence rather than a reverse iterator, use the "alien smiley" slice: r[::-1]
(where r
is the value you got from range
). This works both in Python 2 (where range
returns a list) and in Python 3 (where range
returns a sequence-like range
object).
You need to change r
back to a list
type. For example:
reversed([1,2]) #prints <listreverseiterator object at 0x10a0039d0>list(reversed([1,2])) #prints [2,1]
Edit
To clarify what you are asking, here is some sample I/O:
>>> r = range(5)>>> x = reversed(r)>>> print x<listreverseiterator object at 0x10b6cea90>>>> x[2]Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> x[2]TypeError: 'listreverseiterator' object has no attribute '__getitem__'>>> x = list(x)>>> x[2] #it works here2