ジェネレータからアイテムを1つだけ選択するにはどうすればいいですか? 質問する

ジェネレータからアイテムを1つだけ選択するにはどうすればいいですか? 質問する

次のようなジェネレータ関数があります。

def myfunct():
  ...
  yield result

この関数を呼び出す通常の方法は次のとおりです。

for r in myfunct():
  dostuff(r)

質問ですが、ジェネレータからいつでも 1 つの要素だけを取得する方法はありますか? たとえば、次のようなことをしたいです:

while True:
  ...
  if something:
      my_element = pick_just_one_element(myfunct())
      dostuff(my_element)
  ...

ベストアンサー1

ジェネレーターを作成する

g = myfunct()

アイテムをご希望の場合は、

next(g)

(またはg.next()Python 2.5 以下)。

ジェネレータが終了すると、 が発生しますStopIteration。必要に応じてこの例外をキャッチするか、defaultの引数を使用することができますnext()

next(g, default_value)

おすすめ記事