python - 如何从生成器中只选择一项?

我有一个生成器函数,如下所示:

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/

相关文章:

linux - ld 找不到现有的库

linux - 如何将stderr和stdout重定向到脚本同一行中的不同文件?

python - 类型错误 : method() takes 1 positional argume

python - 如何获得 Pandas 系列的元素逻辑非?

linux - 查找不属于特定用户的文件

linux - Linux中的缓冲区和高速缓存有什么区别?

python - 如何重命名 conda 环境?

c - 如何将文件指针 ( FILE* fp ) 转换为文件描述符 (int fd)?

python - 在 Python 中,如何拆分字符串并保留分隔符?

python - 为什么 Pycharm 的检查员提示 "d = {}"?