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

158 投票
6 回答
130871 浏览
提问于 2025-04-15 20:16

这是个非常基础的问题 - 在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)

撰写回答