Get the nth item of a generator in Python

Oliver Zheng picture Oliver Zheng · Feb 20, 2010 · Viewed 34.4k times · Source

Is there a more syntactically concise way of writing the following?

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

It seems almost natural that a generator should have a gen[index] expression, that acts as a list, but is functionally identical to the above code.

Answer

cobbal picture cobbal · Feb 20, 2010

one method would be to use itertools.islice

>>> gen = (x for x in range(10))
>>> index = 5
>>> next(itertools.islice(gen, index, None))
5