开发者

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

开发者 https://www.devze.com 2022-12-22 07:59 出处:网络
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

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消