私はちょうど疑問に思っています..どのようにforループ内のさまざまな要素を合計できますか?python sum function forloop
for element in [(2,7),(9,11)] :
g=sum(element[1]-element[0]+1)
print g
私は '和' を削除した場合、私が取得:
6
3
私はちょうど疑問に思っています..どのようにforループ内のさまざまな要素を合計できますか?python sum function forloop
for element in [(2,7),(9,11)] :
g=sum(element[1]-element[0]+1)
print g
私は '和' を削除した場合、私が取得:
6
3
は、私はあなたが取得したい何をすべきかわかりません。それですか?
>>> print sum(element[1]-element[0]+1 for element in [(2,7), (9,11)])
9
temp = []
for element in [(2,7), (9,11)]:
temp.append(element[1]-element[0]+1)
print sum(temp)
と同等ですが、それはメモリ内のリストを作成する回避し、したがって、より効率的です。
あなたは学者で精神的です!名声。 – dkamins
あなたはgenerator expressionでこれを置き換えることができます:
In [20]: sum(element[1] - element[0] + 1 for element in [(2, 7), (9, 11)])
Out[20]: 9
これはに単純化することができます。私は読みやすく見つけて、リスト内の各要素を持っていることを保証
In [21]: sum(y - x + 1 for x,y in [(2, 7), (9, 11)])
Out[21]: 9
...正確に2つの要素。そして、不要なラムダは使用しません。
あなたは、和のリストにこのような何かをあなたのリストをマッピングするためにラムダ関数を使用することができます。
list_of_tuples = [(2,4),(5,7)]
list_of_sums = map(lambda x: x[0]+x[1], list_of_tuples)
あり、同じことをやって他の多くの方法がありますが、あなたはマップを使用したことがない場合やラムダ関数、それはそれらを学ぶよい機会です);
これはあなたが参照しているものですか?
g = 0
for element in [(2,7),(9,11)] :
g= g + (element[1]-element[0]+1)
print g
sum
のみiterable
オブジェクト
を受け付け更新
g = 0
for element in [(2,7),(9,11)] :
g += (element[1]-element[0]+1)
print g # moved indention to show the sum
それは私だけですか、またはリターン6 9と9だけではありませんか? –
これはありますが、インデントが最後の行で間違っているためです;-) – Johnsyweb
最も簡単な方法:
sum(map(lambda (x,y): y-x+1 , [(2,7),(9,11)]))
>>> sum(right-left+1 for left,right in [(2,7),(9,11)])
9
そして、あなたがしたいです9を得る? –
はい、まさに:) –
正確に何を取得しようとしていますか?それはあまり明確ではありません。タプルのすべての要素の合計が必要ですか?または合計のリスト? – pcalcao