python - 迭代所有不相交的对

标签 python

如何迭代 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/

相关文章:

python - 查表并在python中拆分句子

python - Hashlib 哈希没有正确比较

python - pyqt5调用url时处于无响应状态

python - OpenCV 鸡蛋计数 python

python - 如何在 plotly 中使用聚合绘制箱线图?

python - 如何减少python列表算法中k个连续数字的最大和的执行时间

python 字符串语法错误 += 运算符

python - 使用 TensorFlow 2.x 版本从头开始进行 BERT 预训练

python - 用户列表被分为 CSV 文件中的各个字符

python - 绘图 : using percentage on x axis