How to get one value at a time from a generator function in Python?
Very basic question - how to get one value from a generator in Python?
So far I开发者_Python百科 found I can get one by writing gen.next()
. I just want to make sure this is the right way?
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.
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
This is the correct way to do it.
You can also use next(gen)
.
http://docs.python.org/library/functions.html#next
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.
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.
精彩评论