Python—如何在列表中查找两个数字的所有组合

Python—如何在列表中查找两个数字的所有组合,python,python-3.x,Python,Python 3.x,假设我有一个包含四个值的列表。我想找到两个值的所有组合。例如,我希望得到如下输出: ((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)) 如您所见,我不希望重复,例如(0,1)和(1,0) 这需要能够用于更大的数字,而不仅仅是4,并且我必须遍历所有的组合 我正在使用Python3和Windows,理想情况下,这将是一个内置函数、一段简单的列表理解代码,或者我可以导入的东西。我试着用range做这个,但我不知道如何从中排除我已经做过的数字 提前谢谢这很

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

((0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3))
如您所见,我不希望重复,例如(0,1)和(1,0)

这需要能够用于更大的数字,而不仅仅是4,并且我必须遍历所有的组合

我正在使用Python3和Windows,理想情况下,这将是一个内置函数、一段简单的列表理解代码,或者我可以导入的东西。我试着用range做这个,但我不知道如何从中排除我已经做过的数字

提前谢谢

这很容易

from itertools import combinations
list(combinations([0,1,2,3],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)]

看看Ok,当然可以,但是你是否给了一个机会提前实际搜索这个问题,或者你认为这个问题是新的?代码中的特定行有问题吗<从itertools导入组合中的代码>和组合中的i(范围(4),2)
:打印(i)
就足以创建一个生成器并将其循环。@PatrickArtner我同意。然而,我没有找到任何好的解释这个问题的答案。这可能是因为它的基础知识已经有了很好的文档记录。很抱歉,编辑太草率了,这是我的第一次postNP,只需标记所有代码并点击{}这将主要解决编辑问题,如果你直接从编辑器复制/粘贴的话。我想我现在已经修复了它