2017-09-19 10 views
0

私はこのリストの各値のペアを合計しようとしています。ここでは簡単な例ですが、私は関数を任意の長さのリストで動作させたいと思います。Python3リストに追加/反復する

y = 0 
for i in x: 
    y += x[0] + x[1] 
    y += x[1] + x[2] 
    y += x[0] + x[2] 
return y 

私は私の質問がクリアされているかどうかわからないんだけど:X = [1,2,3]のために私はこれを凝縮したい12の値を返すしたいと思いますので、

、私は質問があるかどうかを明確にします。

答えて

2
for i in range(0, len(x)-1): 
     for j in range(i+1, len(x)): 
      sum+=x[i]+x[j] 

私はこの権利を書いたことをうまくいけば、それは私がPythonに触れてから少しです。しかし、本質的に、マーカー1とマーカー2があります。マーカー1は0から始まり、外側ループが増加するたびにカウントアップし、jはi + 1で始まり、配列の最後までカウントします。次に、iとjを合計します。そうすることによって、最終的にすべての組み合わせを合計します。最後の2番目の結果で停止するのでlen(x)-1です。インデックスは0から始まるため、len(x)は最後のインデックスの値より1大きいですが、範囲には終了値は含まれません)。 jは最後のインデックス(len(x)-1)で停止します。

0

の組み合わせを試してみてください:

from itertools import combinations 

x = [1,2,3] 
y = 0 
for p in combinations(x, 2): 
    y += sum(p) 

Combinations

0
import itertools 
y = sum(sum(combo) for combo in itertools.combinations(x, 2)) 
関連する問題