[Python-Dev] Confusing listreverseiterator Behavior (original) (raw)
Georg Brandl g.brandl at gmx.net
Tue Aug 26 22:30:56 CEST 2008
- Previous message: [Python-Dev] Confusing listreverseiterator Behavior
- Next message: [Python-Dev] Confusing listreverseiterator Behavior
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Jeff Hall schrieb:
I realized after I fired off my response that this was still bugging me... it appears that the documentation is incorrect
from 2.1 Built-in Functions (v2.5 in case it matters... a quick search of bugs doesn't seem to show anything though) reversed( seq) Return a reverse iterator. seq must be an object which supports the sequence protocol (the len() method and the getitem() method with integer arguments starting at |0|). New in version 2.4. the above appears to only be true for lists.
Not at all. (I think you misread; the len method must be present on the argument, not the returned object.)
For tuples and strings it creates a reverse OBJECT which behaves slightly differently (notably by not including a len() method as you noticed)
I can't find how to actually create a "tuplereverseiterator" or "stringreverseiterator" objects... nor does there appear to be a way to create a "reversed" object from a list...
You don't need to. An object returned by reversed() only needs to follow the iterator protocol. Whether it is a listreverseiterator or a general reversed object doesn't matter.
In fact, reversed() calls reversed on its argument if it exists, so that custom types may provide their own optimized reverse iterator.
Georg
- Previous message: [Python-Dev] Confusing listreverseiterator Behavior
- Next message: [Python-Dev] Confusing listreverseiterator Behavior
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]