我需要迭代發電機與自身的乘積,不包括對角線。我試圖用itertools.tee
消耗相同的發電機兩次發電機本身的產品
def pairs_exclude_diagonal(it):
i1, i2 = itertools.tee(it, 2)
for x in i1:
for y in i2:
if x != y:
yield (x, y)
這不起作用
In [1]: for (x, y) in pairs_exclude_diagonal(range(3)):
...: print(x, y)
0 1
0 2
的documentation for tee狀態:從單一的迭代
返回n個獨立的迭代器。
這樣做的正確方法是什麼?
(我使用python3.6.1)
我不知何故把它放在我的腦海裏,我試過'product',它有同樣的問題。剛剛嘗試過,它工作得很好。衛生部。 –
另外,當然在使用'it2'兩次。感謝您指出了這一點。 –
除非我在'product'中使用'repeat = 2',否則我會得到這個配方的解包錯誤。這適用於你? – SethMMorton