如何迭代 range(n)
中所有不相交的对?
例如,设置 n = 4。那么您将迭代应该是
[((0,1),(2,3)),((0,2),(1,3)), ((0,3),(1,2))]
如果n=5
那么你会迭代
[((0,1),(2,3)), ((0,1),(2,4)), ((0,1),(3,4)), ((0,2),(1,3)),((0,2),(1,4)), ((0,3),(1,2)), ((0,3),(1,4)), ((0,4),(1,2)), ((0,4), (1,3)), ((0,4),(2,3)) ...
最佳答案
你可以这样做:
import itertools
n = 4
data = range(n)
for item1 in itertools.combinations(data, 2):
for item2 in itertools.combinations(data, 2):
if item1 < item2 and not set(item1) & set(item2):
print item1, item2
这给出:
(0, 1) (2, 3)
(0, 2) (1, 3)
(0, 3) (1, 2)
关于python - 迭代所有不相交的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140466/