所有成对python

所有成对python,python,Python,给定一个列表l=range(n),我如何迭代该列表中所有不同对的不同对 例如,如果l=[0,1,2,3]我想要[((0,1),(0,1),(0,3)),((0,1),(1,2)),((0,1),(1,3)),((0,1),(2,3)),((0,2),(0,2),(1,2)),((0,2),(1,3)),((0,2),(1,3)),((0,2),(2,3)),你可以使用: 第一个调用创建初始对: >>> l = [0,1,2,3] >>> list(combin

给定一个列表
l=range(n)
,我如何迭代该列表中所有不同对的不同对

例如,如果
l=[0,1,2,3]
我想要
[((0,1),(0,1),(0,3)),((0,1),(1,2)),((0,1),(1,3)),((0,1),(2,3)),((0,2),(0,2),(1,2)),((0,2),(1,3)),((0,2),(1,3)),((0,2),(2,3)),
你可以使用:

第一个调用创建初始对:

>>> l = [0,1,2,3]
>>> list(combinations(l, 2))
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
第二组再次配对:

>>> list(combinations(combinations(l, 2), 2))
[((0, 1), (0, 2)), ((0, 1), (0, 3)), ((0, 1), (1, 2)), ((0, 1), (1, 3)), 
 ((0, 1), (2, 3)), ((0, 2), (0, 3)), ((0, 2), (1, 2)), ((0, 2), (1, 3)), 
 ((0, 2), (2, 3)), ((0, 3), (1, 2)), ((0, 3), (1, 3)), ((0, 3), (2, 3)), 
 ((1, 2), (1, 3)), ((1, 2), (2, 3)), ((1, 3), (2, 3))]
您可以使用:

第一个调用创建初始对:

>>> l = [0,1,2,3]
>>> list(combinations(l, 2))
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
第二组再次配对:

>>> list(combinations(combinations(l, 2), 2))
[((0, 1), (0, 2)), ((0, 1), (0, 3)), ((0, 1), (1, 2)), ((0, 1), (1, 3)), 
 ((0, 1), (2, 3)), ((0, 2), (0, 3)), ((0, 2), (1, 2)), ((0, 2), (1, 3)), 
 ((0, 2), (2, 3)), ((0, 3), (1, 2)), ((0, 3), (1, 3)), ((0, 3), (2, 3)), 
 ((1, 2), (1, 3)), ((1, 2), (2, 3)), ((1, 3), (2, 3))]

@wheaties我试着玩itertools,但我没能做对。@oct最好是你展示你写的代码,这样我们就可以帮助你了。有时这只是一个“大脑放屁”你做得很好,其他时候你学到了一些基本的东西,这让你变得更好。@wheaties我试着玩itertools,但我做不好。@Octnot最好是你展示你写的代码,这样我们就可以帮助你了。有时这只是一个“大脑放屁”你做得很好,其他时候你学到了一些基本的东西,让你变得更好。但是这只给出了
[(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)]
,他的问题有点不同,我想这会给出所有不同的对。我想要所有(不同的)对(不同的)配对。但我可以做ll=itertools.combines(l,2)。对于itertools.combines中的配对(ll,2):谢谢。但这只给出了
[(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)]
,他的问题有点不同,我认为这会给出所有不同的配对。我想要所有(不同的)配对(不同的)pairs.但是我可以做ll=itertools.combines(l,2)。对于itertools.combines(ll,2)中的pair,谢谢。