我有一个包含重复元素的列表,例如 array = [2,2,2,7]。
如果我使用建议的解决方案in this answer (使用 itertools.combinations()),我得到:
()
(7,)
(2,)
(2,)
(2,)
(7, 2)
(7, 2)
(7, 2)
(2, 2)
(2, 2)
(2, 2)
(7, 2, 2)
(7, 2, 2)
(7, 2, 2)
(2, 2, 2)
(7, 2, 2, 2)
如您所见,一些“组合”是重复的,例如(7,2,2) 出现了 3 次。
我想要的输出是:
()
(7,)
(2,)
(7, 2)
(2, 2)
(7, 2, 2)
(2, 2, 2)
(7, 2, 2, 2)
我可以检查重复组合的输出,但我认为这不是解决此问题的最佳方法。
请您参考如下方法:
您可以获取一组组合,然后将它们链接在一起。
from itertools import chain, combinations
arr = [2, 2, 2, 7]
list(chain.from_iterable(set(combinations(arr, i)) for i in range(len(arr) + 1)))
# [(), (7,), (2,), (2, 7), (2, 2), (2, 2, 2), (2, 2, 7), (2, 2, 2, 7)]
