Python – リスト内の要素を連続的に除算する方法
Pythonでリスト内の要素を連続的に除算する(最初の要素から始めて、残りの要素で順番に割っていく)必要がある場合があります。そのようなときは、リストの要素を反復処理し、「/」演算子を使って結果を求める関数を定義すると簡単に実現できます。
以下に具体的な実装例を示します。
サンプルコード
def consec_division(my_list):
my_result = my_list[0]
for idx in range(1, len(my_list)):
my_result /= my_list[idx]
return my_result
my_list = [2200, 500, 100, 50, 20, 5]
print("The list is :")
print(my_list)
my_result = consec_division(my_list)
print("The result is :")
print(my_result)
実行結果
The list is : [2200, 500, 100, 50, 20, 5] The result is : 8.8e-06
コードの解説
「consec_division」という名前の関数を定義し、引数としてリストを受け取ります。
まず、リストの0番目(先頭)の要素を変数「my_result」に代入します。
次に、1番目以降の要素に対してループ処理を行い、「/」演算子を使って変数の値を各要素で順次割っていきます。
すべての除算が完了したら、最終的な結果を返り値として返します。
関数の外側では、除算対象となるリストを定義し、コンソールに表示します。
定義したリストを引数として渡し、関数を呼び出します。
戻り値は変数「my_result」に代入されます。
最後に、その結果をコンソールに出力して確認します。
この例では、2200 ÷ 500 ÷ 100 ÷ 50 ÷ 20 ÷ 5 の計算が行われ、結果として 8.8e-06(0.0000088)が出力されています。
別の方法:functools.reduce を使う
同じ処理は、標準ライブラリの functools.reduce を使うともっと簡潔に記述できます。
from functools import reduce my_list = [2200, 500, 100, 50, 20, 5] result = reduce(lambda x, y: x / y, my_list) print(result) # 8.8e-06
このように reduce を使えば、forループを明示的に書かずに1行で連続除算を実現できます。可読性やプロジェクトのコーディングスタイルに応じて、両者の方法を使い分けるとよいでしょう。
-
Pythonでリストを並べ替える方法を解説!sortとsortedの使い分けからkey引数まで
Pythonでは、整数・浮動小数点数・文字列などのリストは、sortメソッドを呼び出すだけで簡単に並べ替えができます。また、降順(逆順)でソートしたい場合は、reverseパラメータにTrueを指定するだけです。sortメソッドを使った基本的な並べ替えまずは、昇順と降順それぞれのソート例を見てみましょう。my_list = [1, 5, 2, 6, 0] my_list.sort() print(my_list) my_list.sort(reverse=True) print(my_list)出力結果[0, 1, 2, 5, 6] [6, 5, 2, 1, 0]このように、sort()を呼び
-
Pythonでリストの指定した位置にオブジェクトを挿入する方法
Pythonのリストにおいて、指定した位置(インデックス)に要素を挿入したい場合は、insert(pos, obj) メソッドを使用します。このメソッドは挿入したいオブジェクトを1つ引数として受け取り、メソッドを呼び出したリストの pos 番目の位置にそのオブジェクトを追加します。既存の要素は後ろにずらされるため、元のデータが失われることはありません。例my_list = [2, 3, 1, -4, -1, -4] my_list.insert(1, 0) print(my_list)実行結果上記のコードを実行すると、次のような出力が得られます。[2, 0, 3, 1, -4, -1, -4]