获取python中所有可能的顺序组合



我有一个1和2的列表,例如[2,1,1,1],我需要得到所有可能的组合:

[[2, 1, 1, 1], 
[1, 2, 1, 1], 
[1, 1, 2, 1],
[1, 1, 1, 2]]

我尝试使用itertools的product,然而,它多次返回相同的结果(例如[2,1,1,1]),并且当输入较大时效率低下。有一些内置的功能来做这样的事情吗?

您要查找的是排列:

>>> import itertools
>>> a = [2, 1, 1, 1]
>>> list(set(itertools.permutations(a)))
[(1, 1, 1, 2), (1, 1, 2, 1), (2, 1, 1, 1), (1, 2, 1, 1)]

最新更新