How to get one value at a time from a generator function in Python?

Question:

Very basic question – how to get one value from a generator in Python?

So far I found I can get one by writing gen.next(). I just want to make sure this is the right way?

Asked By: bodacydo

||

Answers:

This is the correct way to do it.

You can also use next(gen).

http://docs.python.org/library/functions.html#next

Answered By: recursive

Yes, or next(gen) in 2.6+.

In Python <= 2.5, use gen.next(). This will work for all Python 2.x versions, but not Python 3.x

In Python >= 2.6, use next(gen). This is a built in function, and is clearer. It will also work in Python 3.

Both of these end up calling a specially named function, next(), which can be overridden by subclassing. In Python 3, however, this function has been renamed to __next__(), to be consistent with other special functions.

Answered By: Christian Oudard

In python 3 you don’t have gen.next(), but you still can use next(gen).
A bit bizarre if you ask me but that’s how it is.

Answered By: Niki.py

Use (for python 3)

next(generator)

Here is an example

def fun(x):
    n = 0
    while n < x:
        yield n
        n += 1
z = fun(10)
next(z)
next(z)

should print

0
1
Answered By: dshri

To get the value associated with a generator object in python 3 and above use next(<your generator object>).
subsequent calls to next() produces successive object values in the queue.

Answered By: Ryukendo Dey
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.