List1=[1,2,3]
我想要一个如下所示的输出
[6,5,4,3]
这是最大总和是6。 但我喜欢做的是我希望列表中的所有可能的总和。 那就是3 + 2,2 + 1,1 + 3等......就像所有可能的方式一样。
答案 0 :(得分:1)
这对你有用吗?
from itertools import chain, combinations
list1 = [1, 2, 3]
n = len(list1)
c = (combinations(list1, r) for r in range(2, n+1))
c = set(sum(i) for i in chain.from_iterable(c))
print(c)
# {3, 4, 5, 6}
结果将是长度 r 的每个组合的唯一总和, r 从2到输入列表的长度运行。结果使用set构造函数来保证唯一值。
在一个功能中:
def unique_sum(obj):
return set(sum(i) for i in chain.from_iterable(
combinations(obj, r) for r in range(2, len(obj)+1)))
unique_sum([5, 5, 5])
# {10, 15}