如何从Python中的生成器函数一次获取一个值?

时间:2010-03-10 19:11:28

标签: python generator

非常基本的问题 - 如何从Python中的生成器中获取一个值?

到目前为止,我发现我可以通过编写gen.next()来获得一个。我只是想确保这是正确的方法吗?

6 个答案:

答案 0 :(得分:112)

是,或2.6 +中的next(gen)

答案 1 :(得分:52)

在Python< = 2.5中,使用gen.next()。这适用于所有Python 2.x版本,但不适用于Python 3.x

在Python> = 2.6中,使用next(gen)。这是一个内置功能,更清晰。它也适用于Python 3。

这两个最终都会调用一个特殊命名的函数next(),它可以被子类化覆盖。但是,在Python 3中,此函数已重命名为__next__(),以与其他特殊函数保持一致。

答案 2 :(得分:9)

这是正确的方法。

您也可以使用next(gen)

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

答案 3 :(得分:4)

使用(对于python 3)

next(generator)

这是一个例子

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

应该打印

0
1

答案 4 :(得分:2)

在python 3中你没有gen.next(),但你仍然可以使用next(gen)。 如果你问我这有点奇怪,但事情就是这样。

答案 5 :(得分:2)

要获取与python 3及更高版本中的生成器对象关联的值,请使用next(<your generator object>)。 随后对next()的调用会在队列中产生连续的对象值。