2017-11-17 4 views
0
List1=[1,2,3] 

私は最大の和である可能な合計

[6,5,4,3] 

以下のような出力が6 ですが、私がやりたいことは、私はそのリスト内のすべての可能な合計をしたいですしたいです。 これはすべての可能な方法のように、3 + 2、2 + 1、1 + 3などです。

+0

あなたがより多くを明確にすることはできますか?たとえば、あなたは何桁の合計を取っていますか?一度に2つの数字をここに表示しています。\ – GadaaDhaariGeek

+0

それは問題です。それは入力に依存し、N個の数字が提供されます。 –

+0

@FlashSavitarあなたが求めていることは明確ではありません。任意のリスト内のすべての組み合わせのN個の数字の合計を返すにはこれが必要ですか? '1'を返すことができるあなたのリストに合計の組み合わせがないので。 –

答えて

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} 

結果は、あなたの入力リストの長さスルーまで2から実行Rと長R、各組合せの固有和であろう。結果は、一意の値を保証するためにセットコンストラクタを使用します。機能で

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} 
関連する問題