[Python-Dev] Re: PEP 322: Reverse Iteration

Samuele Pedroni pedronis at bluewin.ch
Wed Nov 5 11:34:29 EST 2003


At 17:09 05.11.2003 +0100, Alex Martelli wrote:
>On Wednesday 05 November 2003 03:54 pm, Phillip J. Eby wrote:
>    ...
> > >reverse iteration.  The iterator object has no way of knowing in advance
> > >that it is going to be called by reversed().
> >
> > Why not change enumerate() to return an iterable, rather than an
> > iterator?  Then its __reversed__ method could attempt to delegate to the
> > underlying iterable.  Is it likely that anyone relies on enumerate() being
> > an iterator, rather than an iterable?

I think he was wondering whether people rely on


enumerate([1,2]).next
i = enumerate([1,2])
i is iter(i)

working , vs. needing iter(enumerate([1,2]).next

I think he was proposing to implement enumerate as

class enumerate(object):
   def __init__(self,iterable):
     self.iterable = iterable

   def __iter__(self):
     i = 0
     for x in self.iterable:
       yield i,x
       i += 1

   def __reversed__(self):
     rev = reversed(self.iterable)
     try:
       i = len(self.iterable)-1
     except (TypeError,AttributeError):
       i = -1
     for x in rev:
        yield i,x
        i -= 1








More information about the Python-Dev mailing list