Pythonでネストされたリストから最大値を持つサブリストを検索する方法
Pythonでは、リストの要素として別のリスト(サブリスト)を持つことができます。本記事では、指定されたリストの中に含まれる複数のサブリストから、最大値を持つサブリストを見つける方法を2つのアプローチで解説します。
方法1: max関数とlambda式を組み合わせる
最もシンプルな方法は、max()関数とlambda式を組み合わせることです。lambda式でサブリスト内の比較対象となる要素(この例ではインデックス1の数値)を指定することで、その値が最大であるサブリストを取得できます。
コード例
listA = [['Mon', 90], ['Tue', 32], ['Wed', 120]]
# lambda式を使用して比較キーを指定
res = max(listA, key=lambda x: x[1])
# 結果を出力
print("Given List:\n", listA)
print("List with maximum value:\n ", res)
実行結果
上記のコードを実行すると、以下の出力が得られます。
Given List: [['Mon', 90], ['Tue', 32], ['Wed', 120]] List with maximum value: ['Wed', 120]
この例では、各サブリストの2番目の要素(90、32、120)を比較し、最大値120を持つ['Wed', 120]が返されています。
方法2: operatorモジュールのitemgetterを使う
もう一つの方法は、operatorモジュールのitemgetter()を使用する方法です。lambda式と同様に、itemgetter(1)でインデックス1の要素を抽出し、それをmax()関数のキーとして適用します。大量のデータを扱う場合、itemgetterはlambdaよりも高速に動作するという利点があります。
コード例
import operator
listA = [['Mon', 90], ['Tue', 32], ['Wed', 120]]
# itemgetterを使用して比較キーを指定
res = max(listA, key=operator.itemgetter(1))
# 結果を出力
print("Given List:\n", listA)
print("List with maximum value:\n ", res)
実行結果
上記のコードを実行すると、以下の出力が得られます。
Given List: [['Mon', 90], ['Tue', 32], ['Wed', 120]] List with maximum value: ['Wed', 120]
まとめ
どちらの方法でも同じ結果が得られます。簡潔さを重視するならlambda式、パフォーマンスを重視するならoperator.itemgetter()を選ぶのがおすすめです。状況に応じて使い分けることで、より効率的なPythonコードを書くことができます。
-
Pythonのリストから最小値の要素を取得する方法をわかりやすく解説
Pythonでリストの中から最小値を持つ要素を取得したい場合は、組み込み関数の min() を使います。min() 関数にリストを引数として渡すと、先頭から順に要素を走査し、それまでに見つかった最小値を記憶しながらリストの末尾まで進み、最終的にその最小値を返します。基本的な使い方まずは最もシンプルな例を見てみましょう。my_list = [2, 3, 1, 5, -1] print(min(my_list))実行結果-1このように、リスト内の最小値である -1 が出力されます。数値以外にも、文字列のリスト(辞書順で最小のもの)などにも同じように使えます。最小値のインデックスも取得したい場合最小
-
Pythonでリスト内の最大値を持つ要素を見つける方法
Pythonのリストから最大値を持つ要素を見つけるには、組み込み関数 max() にリストを引数として渡すだけです。max() 関数はリストを先頭から順に走査し、それまでに見つけた最大値を記録しながら末尾まで進み、最終的にその最大値を返します。基本的な使い方以下は、リスト内の最大値を取得するシンプルな例です。my_list = [2, 3, 1, 5, -1] print(max(my_list))出力結果このコードを実行すると、次のように最大値が出力されます。5最大値のインデックス(出現位置)も取得する方法最大値そのものだけでなく、リスト内で最大値が出現するすべての位置(インデックス)を知り