【发布时间】:2021-01-21 02:46:29
【问题描述】:
我正在尝试打印使用 next() 时获得的生成器函数的产量。
我已经按照这个定义了一个函数:
import itertools
sequence = ['a', 'b', 'c', 'd']
def next_player(seq):
yield itertools.cycle(seq)
现在,当我调用上述函数并使用 next()(例如 next(next_player(sequence)))时,我得到的是内存地址(例如
如何打印列表中的实际值(例如“a”、“b”等)。我知道我可以使用“for”语句来迭代生成器对象,但我很好奇是否有另一种方法可以使用 next() 等来做到这一点。
【问题讨论】:
-
您的意思是:
return itertools.cycle(seq)? -
当您必须在 for 循环中返回多个值时,您想使用
yield。例如,它使您不必附加到列表中。这里你只需要返回一次,所以你需要return,在这种情况下与yield from相同,因为你已经返回了一个生成器。