我有一个数组[1, 1, 2, 3, 3, 3, 0, 0, 0, 0, 0]
。我想在对称/重复的考虑下生成所有排列(例如,对于一个较小的示例:[1, 1]
只有一个排列,而不是两个用于交换1
的排列。)使用itertools枚举所有排列(请参阅代码以下)效率不高,特别是因为我想要更大的套装。
from itertools import permutations
p = permutations([1, 1, 2, 3, 3, 3, 0, 0, 0, 0, 0])
j = 0
for i in list(p):
print(i)
j += 1
# reduce all permutations e.g. with set().
是否有一种优雅的方式来枚举所有组合?如何以有效的方式实现它(可能最大的情况是数组中有大约100个元素)?谢谢你的帮助。