私はいくつかのグラフトラバーサルを行っています。各ポイントで、調査できた可能性のある他のオプションのジェネレーターを保存します。後で、これらのジェネレーターのいくつかを調査しましたが、機能しません。
以下は、すべてのジェネレーターで「ノード」変数が 3 に設定されている簡単な例です。(したがって、ジェネレーターは「ノード」変数を指し返しますが、「ノード」変数はジェネレーターが消費される前に変更されます。
私の特定のケースでは、いくつかのポインターを保存し、それらのポインターをどうするかのロジックを追加して、ジェネレーターを再作成することができますが、これは醜い解決策です。
それを行う簡単な方法はありますか?
node_size = {1:1, 2:2, 3:1, 4:3}
iters = []
for node in range(1,4):
it = (1 + node_size[node]+j for j in xrange(3))
#it = iter(list(it)) #remove comment to get correct result but very slow.
iters.append(it)
for iter_ in iters:
print list(iter_)
"""
Correct Output
[2, 3, 4]
[3, 4, 5]
[2, 3, 4]
"""
"""
Actual Output:
[2, 3, 4]
[2, 3, 4]
[2, 3, 4]
"""