3

私はいくつかのグラフトラバーサルを行っています。各ポイントで、調査できた可能性のある他のオプションのジェネレーターを保存します。後で、これらのジェネレーターのいくつかを調査しましたが、機能しません。

以下は、すべてのジェネレーターで「ノード」変数が 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]
"""
4

2 に答える 2