Python列表的所有排列

时间:2014-01-13 15:10:21

标签: python list sorting swap itertools

嘿,我有一个列表,我希望得到它的所有不同的排列,即 [A,B,C]。

我想要它的所有不同组合。像[A,C,B],[B,A,C],[B,A,C],[C,A,B]和[C,B,A]我尝试使用itertools.combinations,我得到所有组合都不是使用所有字母的组合。

matriks = ["A","B","C"]
    combs=[]
    for i in xrange(1, len(matriks)+1):
    els = [list(x) for x in itertools.combinations(matriks, i)]
    combs.append(els)
print(combs)

这给出了以下输出

[[['A'], ['B'], ['C']], [['A', 'B'], ['A', 'C'], ['B', 'C']], [['A', 'B', 'C']]]

1 个答案:

答案 0 :(得分:5)

您只需使用itertools.permutations

即可
>>> from itertools import permutations
>>> 
>>> l = ["A","B","C"]
>>> 
>>> list(permutations(l))
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]