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).
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com