[Python-Dev] Re: PEP 322: Reverse Iteration
Phillip J. Eby
pje at telecommunity.com
Wed Nov 5 12:06:13 EST 2003
At 05:34 PM 11/5/03 +0100, Samuele Pedroni wrote:
>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
Yes, precisely.
>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
Yes, except I hadn't thought it out in quite that much detail. Thanks for
the clarification.
More information about the Python-Dev
mailing list