Существует ли более синтаксически краткий способ записать следующее?
gen = (i for i in xrange(10))
index = 5
for i, v in enumerate(gen):
if i is index:
return v
Кажется почти естественным, что генератор должен иметь a gen[index]
выражение, которое действует как список, но функционально идентично вышеупомянутому коду.
один из методов - использовать itertools.islice
>>> next(itertools.islice(xrange(10), 5, 5 + 1))
5
Возможно, вам стоит подробнее рассказать о реальном примере использования.
>>> gen = xrange(10)
>>> ind=5
>>> gen[ind]
5
Вы можете сделать это, используя count
в качестве примера генератора:
from itertools import islice, count
next(islice(count(), n, n+1))