ジェネレーターを反復する for ループがあり、このループで後で使用するリストを作成しているとします。
q = []
for index, val in enumerate(['a', 'b', 'c']):
q.append(index+val)
このような関数を作成せずにジェネレーターを保持したい:
def foo(gen):
for index, val in gen:
yield index+val
それはまったく可能ですか、それともここには見られない固有の問題がありますか?
次のようになるはずです。
iter_q = something()
for index, val in enumerate(['a', 'b', 'c']):
q.add_iteration(index+val)
OK、これを書いたので、これはまったく不可能 (または役に立たない) ように思えます。なぜなら、この for ループは、「ジェネレーター」の準備が整う前にリスト全体を反復処理する必要があるためです。 、オブジェクトの有用な意味でのジェネレーターではありません。
自分でそのような質問を見つけることができなかったので、とにかく投稿します。(さらに、誰かがそれについてまだ興味深いことを言っているかもしれません)