排列生成其元素根据其位置而不是根据其值被视为唯一的情况。所以基本上我想避免这样的重复:
>>> list(itertools.permutations([1, 1, 1]))
[(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)]
之后的过滤是不可能的,因为在我的例子中排列的数量太大了。
有人知道合适的算法吗?
非常感谢!
编辑:
我基本上想要的是这样的:
x = itertools.product((0, 1, 'x'), repeat=X)
x = sorted(x, key=functools.partial(count_elements, elem='x'))
这是不可能的,因为 sorted
创建了一个列表,itertools.product 的输出太大了。
对不起,我应该描述一下实际的问题。