可能性の重複を取得する方法:
How to clone a Python generator object?ジェネレータ関数の複数のインスタンス
は、私は発電機「stuff_to_try」を持っていると仮定し、私は1つずつそれらを試すことができますが、私は持っていた場合そのメソッドは再帰的ですが、私はそれぞれの再帰に、最後の再帰が途絶えた場所ではなく、最初のyieldで始まる新しい新しいジェネレータを取得させたいと考えています。
def solve(something):
if exit_condition(something):
return
next_to_try = stuff_to_try.next()
while not if_works(next_to_try):
next_to_try = stuff_to_try.next()
solve(do_something(something))
もちろん、私は再帰関数内でstuff_to_tryを定義できますが、より良い方法はありますか? stuff_to_try.clone()。reset()などと同等のものがありますか?
問題の悪い例です生成する短い有限リストがあることを暗示しているので、リストは簡単ですが、実際の問題はジェネレータをクローンする方法です。ジェネレータがもっと複雑であるとします。 – xster
間違いなく最も単純ですが、実用的ではない場合があります。リストがメモリに収まらない場合があります。 –
もちろん、それは欠点です。つまり、手元の発電機に応じて唯一の実用的な解決策になるかもしれません。 –