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

PythonGenerator

Python Problem Overview


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?

Python Solutions


Solution 1 - Python

Yes, or next(gen) in 2.6+.

Solution 2 - Python

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.

Solution 3 - Python

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



	    

Solution 4 - Python

This is the correct way to do it.

You can also use next(gen).

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

Solution 5 - Python

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.

Solution 6 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionbodacydoView Question on Stackoverflow
Solution 1 - PythonIgnacio Vazquez-AbramsView Answer on Stackoverflow
Solution 2 - PythonChristian OudardView Answer on Stackoverflow
Solution 3 - PythondshriView Answer on Stackoverflow
Solution 4 - PythonrecursiveView Answer on Stackoverflow
Solution 5 - PythonRyukendo DeyView Answer on Stackoverflow
Solution 6 - PythonNiki.pyView Answer on Stackoverflow