from itertools import islice a = (i for i in range(0, 100, 10)) next(islice(a, 5, None))
Paul
On Tue, 17 Nov 2020 at 15:37, Joao S. O. Bueno
Although that is not a pattern I recall I had needed, but for the first item in a generator, I recognize it is more complicated than it should to be able to do that.
However, not only that would be too big a change for all this objects I think one would expect an object providing index access with `[]` to also have a `len`.
Also, see it as potentially making a lot of code error-prone: let's say one gets passed a generator where a sequence is expected. In current Python, if an item is accessed by index, one just get an explicit IndexError. If objects change to having indexes, two consecutive access to `gen[1]` will consume the generator and return different values. That could be very confusing.
On the other hand, as I said, I can't come up with a simple pattern to get the nth item - so probably we should think of an easy and performant way.
One way I can think of is to have a named parameter to the `next` built-in that would allow one to move forward more than one position.
Say: `fith_element = next(gen, skip=4) `
and finally, one way I could think of retrieving the n element is:
In [19]: a = (i for i in range(0, 100, 10))
In [20]: next(b for i, b in enumerate(a) if i==5) Out[20]: 50
It definitely feels like there should be a simpler way, but I just could not come up with it.
On Tue, 17 Nov 2020 at 10:35, Nuri Jung
wrote: How about enabling subscription operator (`[]`) for generator expressions? Also for all `zip()`, `key()`, etc. They could be evaluated in the background only for the requested amount, to avoid evaluating the whole expression to something like a list or tuple, then indexed. _______________________________________________ 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/WDJWOB... Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ 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/BB4ZMI... Code of Conduct: http://python.org/psf/codeofconduct/