>>> 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 <jsbu...@python.org.br> wrote:
>
> 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 <jnoo...@snu.ac.kr> 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-le...@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/WDJWOB4NVIIQPJWBNZCF5K4SXZJIARFZ/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@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/BB4ZMINMSVUG4N5XOB7P25FZW2IRV67K/
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@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/ZXF3OYEFKB42PDXGXLUXMZJ7GMPFEB7H/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to