次のようなジェネレータ関数があります。
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)