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 <mertz@gnosis.cx> wrote:

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/F7N5H6CAUJM5BICC4BEEWQDNIDGN2RTR/
Code of Conduct: http://python.org/psf/codeofconduct/