我有一个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)]