Python - 如何在列表

时间:2018-06-08 06:36:11

标签: python python-3.x

假设我有一个包含四个值的列表。我想找到两个值的所有组合。例如,我想获得如下输出:

((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3))

如您所见,我不想重复,例如(0,1)和(1,0)

这需要能够使用更大的数字,而不仅仅是4,我将不得不迭代所有的组合

我正在使用Python 3和Windows,理想情况下,这将是一个内置函数,一个简单的列表理解代码,或者我可以导入的东西。我尝试用范围制作它,但我不知道如何排除我已经完成的数字。

提前致谢

2 个答案:

答案 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)]