我在做一些圖遍歷。在每一點上,我都會保存一個可能已經探索的其他可能選項的生成器。後來,我探索了一些這樣的生成器,但它不起作用。將生成器附加到循環中的堆棧,生成器指向最終循環變量
這是一個簡化的例子,您可以看到所有生成器中的「節點」變量設置爲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]
"""
我現在最好的解決方法是使用itertools.repeat – 2013-04-11 03:45:11