[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