如何从生成器中只选择一项?
问题描述
我有一个生成器函数,如下所示:
def myfunct():...产出结果
调用这个函数的常用方法是:
for r in myfunct():材料(r)
我的问题是,有没有一种方法可以随时从生成器中获取一个元素?例如,我想做这样的事情:
当真时:...如果有的话:my_element = pick_just_one_element(myfunct())东西(我的元素)...
解决方案 使用创建生成器
g = myfunct()
每当您想要一件物品时,请使用
<上一个><代码>下一个(g)(或 Python 2.5 或更低版本中的 g.next()
).
如果生成器退出,它将引发 StopIteration
.如有必要,您可以捕获此异常,或使用 next()
的 default
参数:
next(g, default_value)
I have a generator function like the following:
def myfunct():
...
yield result
The usual way to call this function would be:
for r in myfunct():
dostuff(r)
My question, is there a way to get just one element from the generator whenever I like? For example, I'd like to do something like:
while True:
...
if something:
my_element = pick_just_one_element(myfunct())
dostuff(my_element)
...
解决方案
Create a generator using
g = myfunct()
Everytime you would like an item, use
next(g)
(or g.next()
in Python 2.5 or below).
If the generator exits, it will raise StopIteration
. You can either catch this exception if necessary, or use the default
argument to next()
:
next(g, default_value)
相关文章