如何从列表

时间:2016-11-17 07:40:40

标签: python python-2.7 list combinations permutation

排列后我有这个列表:

import itertools
print list(itertools.permutations([1,2,3,4], 2))

这是输出:

[(1,2),(1,3),(1,4),  (2,1),(2,3),(2,4),(3,1),(3,2),(3,4),(4,1),( 4,2),(4,3)]

在该列表中,我们可以找到复制的元素,如(1,2) - (2,1)和(1,3) - (3,1)等等。

我想要的是从这个列表中只获取一个复制元素,输出列表如:

[(1, 2),(1, 3),(1, 4),(2, 3),(2, 4),(3, 4)]

提前致谢

1 个答案:

答案 0 :(得分:4)

您需要列表的组合,而不是排列。为此,Python中有itertools.combinations()函数:

>>> from itertools import combinations
>>> l = [1,2,3,4]
>>> list(combinations(l, 2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

根据document

  
      
  • 排列适用于列表(订单重要)

  •   
  • 组合适用于群组(顺序无关紧要)

  •