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

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

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

是的,或者在2.6+以后next(gen)

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

在Python> = 2.6中,使用next(gen) 。 这是一个内置的function,更清晰。 它也将在Python 3中工作。

这两个都最终调用一个专门命名的函数next() ,它可以被子类重写。 然而,在Python 3中,该函数已被重命名为__next__() ,以与其他特殊函数保持一致。

这是做到这一点的正确方法。

你也可以使用next(gen)

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

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

使用(对于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