我正在做一些图遍历。在每一点上,我都会保存一个生成器,其中包含可以探索的其他可能选项。后来,我探索了其中一些生成器,但它不起作用。
这是一个简化的示例,您可以看到所有生成器中的“node”变量都设置为 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]
"""