如何从Python生成器函数中一次获取一个值?
这是个非常基础的问题 - 在Python中,如何从生成器中获取一个值呢?
到目前为止,我发现可以通过写 gen.next()
来获取一个值。我只是想确认这是不是正确的方法?
6 个回答
25
使用(适用于 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
82
在Python 2.5及之前的版本中,你可以使用gen.next()
来获取下一个值。这种方法适用于所有的Python 2.x版本,但在Python 3.x中就不行了。
从Python 2.6开始,你应该使用next(gen)
。这是一个内置的函数,使用起来更清晰,而且在Python 3中也可以用。
这两种方法最终都会调用一个特别命名的函数next()
,这个函数可以通过继承来进行修改。不过在Python 3中,这个函数被改名为__next__()
,这样和其他特殊函数保持一致。
204
是的,或者在2.6及以上版本中可以用next(gen)
。