我有一个生成器函数,如下所示:
def myfunct():
...
yield result
调用这个函数的常用方法是:
for r in myfunct():
dostuff(r)
我的问题是,有没有一种方法可以随时从生成器中获取一个元素? 例如,我想做这样的事情:
while True:
...
if something:
my_element = pick_just_one_element(myfunct())
dostuff(my_element)
...
最佳答案
使用创建生成器
g = myfunct()
每当您想要一件元素时,请使用
next(g)
(或 Python 2.5 或更低版本中的 g.next()
)。
如果生成器退出,它将引发 StopIteration
。如有必要,您可以捕获此异常,或者使用 next()
的 default
参数:
next(g, default_value)
https://stackoverflow.com/questions/4741243/