Why a range_iterator when a range is reversed?

Viewed 9365

I can subscript a range object:

>>> r = range(4)
>>> r 
range(0, 4)
>>> r[3]
3
>>> for i in r:
    print(i)

0
1
2
3
>>> list(r)
[0, 1, 2, 3]

But, if I call reversed on the same range object:

>>> r = reversed(range(4))
>>> r
<range_iterator object at memaddr>
>>> for i in r:
    print(i)
3
2
1
0
>>> r[3]
TypeError: 'range_iterator' object is not subscriptable         # ?
>>> range(r)
TypeError: 'range_iterator' cannot be interpreted as an integer # ?
>>> list(r)
[]          # ? uhmm

Hmm... Acting kinda like a generator but less useful.

Is there a reason a reversed range object isn't like a normal generator / iterator in how it quacks?

2 Answers
Related