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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4