I am +0.3 on this as I don't personally have a need for this but do see the
utility.
I can think of a number of examples where an `__advance__` would be
preferable to any of the proposed solutions:
A skip list which doesn't support O(1) random access but can advance faster
than naively calling next repeatedly
A lazy infinite iterator which can efficiently calculate its state at some
future point (e.g. `itertools.count`)
A tree iterator could perform efficient `__advance__` by checking the size
of sub trees before descending into them (I'm not sure why you would ever
want to `__advance__` a tree iterator).
My ladder two examples demonstrate that this could have utility outside of
sequences but for iterators in general.
-- Caleb Donovick
On Tue, Oct 6, 2020 at 1:13 PM David Mertz
On Tue, Oct 6, 2020, 1:21 PM Christopher Barker
if you want to iterate through items N to the end, then how do you do that without either iterating through the first N and throwing them away, or making a slice, which copies the rest of the sequence?
it = (lst[i] for i in range(N, len(lst)))
I haven't benchmarked whether this is faster than islice. It might depend on how many you wind up consuming.
It's slightly cumbersome to write, I suppose. But it also seems like something one RARELY needs. _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/F7N5H6... Code of Conduct: http://python.org/psf/codeofconduct/