2016-04-25 12 views
-2

タプルのリストがあるとします:[('3', '20'), ('1', '50'), ('2', '50')]、各タプルの2番目の要素だけを集計するとどうしますか?したがって、この例では、合計は120になります。また、sum()関数が機能するために、数値を整数に変換する必要がありますか? l場合タプルのリストの2番目の要素のみを集計します

答えて

-4

あなたが何かのように、

tup = [('3', '20'), ('1', '50'), ('2', '50')] 
s= 0 
for i in tup: 
    s+= int(i[-1]) 
+0

これは魅力的に機能しました。ありがとうございます。次の質問をお手伝いして申し訳ありませんが、[-1]は何をしていますか?どうもありがとうございます。 – kraderic

+0

@kradericリスト内で負のインデックスを使用すると、先頭からではなく最後からカウントされます。だから 'i [-1]'はリストの最後の要素です。 – Barmar

+0

@kraderic [-1]は最後のものを示します。この場合、[1]と同じです。説明はhttp://stackoverflow.com/questions/509211/explain-pythons-slice-notationこちらをご覧ください。 –

0

を試すことができますが、リストされています

sum(int(x[1]) for x in l) 

代わりのsum(...)あなたもsum((...))またはsum([...])を使用することができます。前者はジェネレータ式を使用し、後者は一時的なリスト(リストの理解)を作成します。

+0

ジェネレータの式を括弧で囲む必要はありません。 'sum(int(x [1])for x in l)'はうまくいきます。 – Delgan

+0

@Delganあなたのコメントを書いている間は既に変更されています。 :-) – Markus

関連する問題