[Python-Dev] PEP 3142: Add a "while" clause to generator expressions

Xavier Morel catch-all at masklinn.net
Thu Jan 22 14:44:41 CET 2009

On 22 Jan 2009, at 12:42 , Nick Coghlan wrote:
> Tino Wildenhain wrote:
>>>> g=(i for i in xrange(1000))[2:5]
>>>> g.next() # wrapper would now step 2 times w/o yield and 1 with  
>>>> yield
>> 2
>>>> g.next()
>> 3
>>>> g.next()
>> 4
>>>> g.next()
>> Traceback (most recent call last):
>>  File "<interactive input>", line 1, in <module>
>> StopIteration
>> as expected - this could be included into itertools for now.
> Slicing of arbitrary iterators has been supported by itertools ever
> since the module was first added to the standard library.

islice is pretty annoying in some aspects, though. Mainly because it  
doesn't accept kwargs and defaults to requiring the stop argument. So  
drop(iterable, n) has to be written islice(iterable, n, None) (and of  
course the naming isn't ideal), and you can't really use  
functools.partial since the iterator is the first argument (unless  
there's a way to partially apply only the tail args without kwargs).

More information about the Python-Dev mailing list