Pythonでインデックス値と要素の積の合計を求める方法|enumerateの使い方
リストの各要素に対して「インデックス値 × 要素」の積を計算し、その合計を求めたい場合には、Pythonの組み込み関数 enumerate を使用するのが便利です。
本記事では、基本的なforループを使った方法と、sum() 関数を組み合わせたより簡潔な書き方の両方を紹介します。
サンプルコード
以下に具体的な実装例を示します。
my_list = [71, 23, 53, 94, 85, 26, 0, 8]
print("The list is :")
print(my_list)
my_result = 0
for index, element in enumerate(my_list):
my_result += (index + 1) * element
print("The resultant sum is :")
print(my_result)実行結果
The list is : [71, 23, 53, 94, 85, 26, 0, 8] The resultant sum is : 1297
コードの解説
まず、整数のリストを定義し、その内容をコンソールに表示します。
合計を格納するための変数
my_resultを 0 で初期化します。enumerate関数を使うことで、リストを反復処理しながら各要素のインデックスと値を同時に取得できます。(index + 1)とすることでインデックスを1始まりにしています。この値を各要素と掛け合わせ、その結果を順次合計に加算していきます。すべての要素の処理が完了すると、最終的な合計値がコンソールに出力されます。
より簡潔な書き方:sum() とジェネレータ式
同じ処理は、sum() 関数とジェネレータ式を組み合わせることで、1行で記述することも可能です。
my_result = sum((index + 1) * element for index, element in enumerate(my_list))
print("The resultant sum is :")
print(my_result) # 1297この方法では、中間変数の初期化やforループが不要になるため、コードがすっきりします。計算結果は先ほどのループ版とまったく同じ 1297 になります。
-
Pythonにおける「+=」と「=+」の違いとは?演算子の動作をわかりやすく解説
Pythonには見た目がよく似ているのに、まったく異なる動作をする演算子が存在します。その代表例が「+=」と「=+」です。この2つは一見同じように見えますが、実際には意味も役割も大きく違います。本記事では、それぞれの動作の仕組みと具体的な使い方を詳しく解説します。 「+=」は複合代入演算子(in-place演算) +=は、Pythonでは複合代入演算子と呼ばれるもので、内部的には object.__iadd__() メソッドへのシンタックスシュガー(糖衣構文)です。 公式ドキュメントには次のように記載されています。 これらのメソッドは、拡張された算術代入(+=、-=、*=、@=、/=、//=
-
Pythonでリスト内の要素のインデックスを取得する方法
index()メソッドで最初の出現位置を取得する リスト(文字列やタプルなど、他のシーケンス型でも同様)に用意されている index() メソッドを使うと、特定の要素が最初に出現する位置(インデックス)を簡単に見つけることができます。 >>> L1=[a, b, c, a, x] >>> L1 [a, b, c, a, x] >>> L1.index(a) 0 この例では、リスト L1 の中で a が最初に出現するのはインデックス 0 の位置であるため、0 が返されます。なお、指定した要素がリスト内に存在しない場合は ValueError