我有一个数字列表,我想导出一个列表,显示这些数字的每个组合的总和。
如此
x=[1,2,3]
output=[
1,
2,
3,
4,
5,
6]
这可能吗?
x=[1137
,85
,15
,314
,4824
,21
,81
,63
,4514
,110
,51
,1
,1048
,13
]
def combs(s, lengths):
return chain.from_iterable(combinations(s,l) for l in lengths)
a=list((combs(x, list(range(len(x))))))
答案 0 :(得分:1)
使用itertools.combinations
:
>>> import itertools
>>> x=[1,2,3]
>>> x+(list(map(sum,itertools.combinations(x,2)))[1:]+list(map(sum,itertools.combinations(x,3))))
[1, 2, 3, 4, 5, 6]
>>>
答案 1 :(得分:1)
您可以使用设定的理解力:
from itertools import combinations
list({sum(c) for i in range(1, len(x) + 1) for c in combinations(x, i)})
这将返回:
[1, 2, 3, 4, 5, 6]