从列表中获取所有组合,包括重复和不重复

时间:2013-11-21 13:13:54

标签: python

我有一个清单

a = ['a', 'b', 'c']

如何从列表中获取重复的所有组合,而不使用它们。 最终输出将是:

[('a', 'b', 'c'),
 ('a', 'c', 'b'),
 ('b', 'a', 'c'),
 ('b', 'c', 'a'),
 ('c', 'a', 'b'),
 ('c', 'b', 'a')]

2 个答案:

答案 0 :(得分:4)

使用itertools.permutations

>>> import itertools
>>> a = ['a', 'b', 'c']
>>> list(itertools.permutations(a))
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]

答案 1 :(得分:0)

使用permutations

中的itertools函数
from itertools import permutations
x = list(itertools.permutations(a))

以上列表不会按字典顺序排序。如果给定的输入列表已排序,则将对输出列表进行排序。否则,您必须使用x.sort()

手动对列表进行排序