Comment on PEP-0322: Reverse Iteration Methods

Raymond Hettinger vze4rx4y at verizon.net
Wed Sep 24 20:58:45 EDT 2003


Please comment on the new PEP for reverse iteration methods.
Basically, the idea looks like this:

     for  i in xrange(10).iter_backwards():    # 9,8,7,6,5,4,3,2,1,0
           <do something with i>

The HTML version is much more readable than the ReST version.
See:
         http://www.python.org/peps/pep-0322.html


Several interesting ideas surfaced in the pre-pep thread:

* Call it ireverse() instead of iter_backwards().

   Good idea.  This is much more pithy.


* Use object properties instead of methods.

   I can't yet claim to understand what the author is really
   proposing.  It has something to do which providing
   access to an object that responds to iter, getitem, and
   getslice with reversed indices.


* using a single function that looks for an __riter__ magic
   method and, if not found, use __getitem__ and __len__
   to build a reverse iterator.

   A workable version of this was posted.
   It saves implementing some object methods at the
      expense of adding a new builtin function and of
      creating a new magic method name.
   It is slower than direct access to the underlying object.
   It crashes when applied to an infinite iterator.
   It produces bizarre results when applied to mappings.


* special markers for infinite iterators

   This idea is interesting but doesn't extend well
   when the object is wrapped by another iterator.
   Also, there is no automatic way to determine
   which generators can be infinite.


Raymond Hettinger






More information about the Python-list mailing list