Pythonでリストのリストから各インデックスの最小値を求める方法
プログラミングでは、リスト内の各要素の最小値を求めたいケースがよくあります。特に行列演算を扱う場合、行列の各列の最小値を求める必要があります。Pythonでは、行列の各列は「リストのリスト」として表現されるため、これは「リストのリストから各インデックス(位置)ごとの最小値を取り出す」処理に相当します。
本記事では、この問題を解決するための代表的な2つの方法を、具体的なコード例とともにわかりやすく解説します。
方法1:min()とzip()を組み合わせる
最もシンプルな方法は、組み込み関数のmin()とzip()を組み合わせるアプローチです。zip()関数を使うと、複数のリストから同じインデックス位置にある要素をまとめてタプルとして取得できます。その結果に対してmin()を適用することで、各インデックスの最小値を効率的に求められます。
コード例
List = [[90, 5, 46], [71, 33, 2], [9, 13, 70]]
print("List : " + str(List))
# min() + zip() を使用
result = [min(index) for index in zip(*List)]
print("minimum of each index in List : " + str(result))実行結果
List : [[90, 5, 46], [71, 33, 2], [9, 13, 70]] minimum of each index in List : [9, 5, 2]
このコードでは、zip(*List)によって各リストの同じ位置の要素がグループ化され、リスト内包表記でそれぞれのグループにmin()を適用しています。その結果、最初のインデックスの最小値は9、2番目は5、3番目は2となっています。
方法2:map()、min()、zip()を組み合わせる
同様の処理は、map()関数を使っても実現できます。map(min, zip(*List))と記述することで、forループやリスト内包表記を使わずに、各インデックスの要素群へmin()を適用できます。より関数型らしい簡潔な書き方です。
コード例
List = [[0.5, 2.4, 7], [5.5, 1.9, 3.2], [8, 9.9, 10]]
print("The list values are: " + str(List))
# min() + map() + zip() を使用
result = list(map(min, zip(*List)))
# 結果の出力
print("Minimum of each index in list of lists is : " + str(result))実行結果
The list values are: [[0.5, 2.4, 7], [5.5, 1.9, 3.2], [8, 9.9, 10]] Minimum of each index in list of lists is : [0.5, 1.9, 3.2]
この例では浮動小数点数を含むリストを使用していますが、同じ手法で正しく動作します。各列の最小値である0.5、1.9、3.2が正しく抽出されています。
まとめ
リストのリストから各インデックスの最小値を求めるには、以下の2つの方法が有効です。
- min() + zip(): リスト内包表記と組み合わせて直感的に書ける方法
- map() + min() + zip(): map()でループ処理を置き換え、より簡潔に書ける方法
どちらの方法も行列の列ごとの最小値計算などに応用できるため、データ処理や数値計算の場面でぜひ活用してください。
-
Pythonでリスト内の要素のインデックスを取得する方法
index()メソッドで最初の出現位置を取得する リスト(文字列やタプルなど、他のシーケンス型でも同様)に用意されている index() メソッドを使うと、特定の要素が最初に出現する位置(インデックス)を簡単に見つけることができます。 >>> L1=[a, b, c, a, x] >>> L1 [a, b, c, a, x] >>> L1.index(a) 0 この例では、リスト L1 の中で a が最初に出現するのはインデックス 0 の位置であるため、0 が返されます。なお、指定した要素がリスト内に存在しない場合は ValueError
-
Pythonリスト入門:作成から操作、削除まで徹底解説
このチュートリアルでは、Pythonのリスト(List)について学びます。リストの作成方法、要素へのアクセス、要素の追加・削除、リスト自体の削除など、基本的な操作を一つずつ丁寧に解説していきます。 Pythonでは、リストは角括弧 [] を使って構築し、各要素はカンマ , で区切って記述します。 Pythonのリストは、異なる型のオブジェクトを混在させて格納できるのが特徴です。すべて文字列である必要も、整数である必要もありません。例えば、以下のように複数の型が混ざったリストを作成できます。mixedTypesList = [a, True, 1, 1.0] リストの作成方法 リストは、角括弧