假设我有一个包含四个值的列表。我想找到两个值的所有组合。例如,我想获得如下输出:
((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3))
如您所见,我不想重复,例如(0,1)和(1,0)
这需要能够使用更大的数字,而不仅仅是4,我将不得不迭代所有的组合
我正在使用Python 3和Windows,理想情况下,这将是一个内置函数,一个简单的列表理解代码,或者我可以导入的东西。我尝试用范围制作它,但我不知道如何排除我已经完成的数字。
提前致谢
答案 0 :(得分:3)
很容易
from itertools import combinations
list(combinations([0,1,2,3],2))
答案 1 :(得分:2)
如果您只需要一个不同的集合
,只需要使用下三角矩阵a = [1,2,10,20]
[(a[i], a[j+i+1]) for i in range(len(a)) for j in range(len(a[i+1:]))]
[(1, 2), (1, 10), (1, 20), (2, 10), (2, 20), (10, 20)]