我想列出列表的所有可能组合
示例:
list = [1,2,3,4]
输出应该给我: [[1],[2],[3],[4],[1,2] ...... [1,2,3,4]]
(我必须寻找一个总和给出最小可能值的组合,它小于或等于变量B,在这种情况下,如果B = 9,我想得到的输出是[2,3, 4])
我目前的解决方案是使用循环,其值为0或1,当值== 1时,该数字被添加到列表中。这个问题是嵌套循环的最大数量低于我列表中的项目数量,它相当慢,这绝对不是一个优雅的解决方案。
有人能帮助我吗?
答案 0 :(得分:0)
from itertools import combinations,chain
l= [1, 2, 3, 4]
print(list(chain.from_iterable(map(list,combinations(l,i)) for i in range(1,len(l)+1))))
[[1], [2], [3], [4], [1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4], [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4]]