Получите энный объект генератора в Python

Существует ли более синтаксически краткий способ записать следующее?

gen = (i for i in xrange(10))
index = 5
for i, v in enumerate(gen):
    if i is index:
        return v

Кажется почти естественным, что генератор должен иметь a gen[index] выражение, которое действует как список, но функционально идентично вышеупомянутому коду.

54
задан alain.janinm 30 April 2012 в 09:51
поделиться

3 ответа

один из методов - использовать itertools.islice

>>> next(itertools.islice(xrange(10), 5, 5 + 1))
5
53
ответ дан 7 November 2019 в 08:06
поделиться

Возможно, вам стоит подробнее рассказать о реальном примере использования.

>>> gen = xrange(10)
>>> ind=5 
>>> gen[ind]
5
-2
ответ дан 7 November 2019 в 08:06
поделиться

Вы можете сделать это, используя count в качестве примера генератора:

from itertools import islice, count
next(islice(count(), n, n+1))
15
ответ дан 7 November 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: