次のようなタプル (常にペア) のリストがあります。
[(0, 1), (2, 3), (5, 7), (2, 1)]
各ペアの最初のアイテムの合計を見つけたいのですが、つまり:
0 + 2 + 5 + 2
Pythonでこれを行うにはどうすればよいですか? 現時点では、リストを繰り返し処理しています:
sum = 0
for pair in list_of_pairs:
sum += pair[0]
もっとPython的な方法が必要だと感じています。
Pythonの最新バージョンでは、SilentGhostが投稿したものを提案します(明確にするためにここで繰り返します):
sum(i for i, j in list_of_pairs)
この回答の以前のバージョンでは、SilentGhost のバージョンが当時最新の Python (2.3) のバージョンでは機能しなかったため、これが必要であると提案しました。
sum([pair[0] for pair in list_of_pairs])
現在、そのバージョンの Python は時代遅れではなく、SilentGhost のコードは現在維持されているすべてのバージョンの Python で動作するため、最初に投稿したバージョンを推奨する理由はもうありません。
sum(i for i, j in list_of_pairs)
もします。
私はお勧め:
sum(i for i, _ in list_of_pairs)
注:
の代わりに変数を使用する_
(または__
のエイリアスとの競合を避けるため) には、少なくとも 2 つの利点があります。gettext
j
_
(プレースホルダーを表す)は読みやすくなっていますpylint
文句を言いません:「未使用の変数 'j'」