2014-01-13 82 views
0

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

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

“组合” 和 “置换” 是不同的东西。听起来像你想要后者。 – geoffspear

+0

是不知道这个词。排列是我想要的 – Becktor

回答

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')]