Pythonで最大値と最小値の差が最も小さい行を抽出する方法
Pythonでは、ネストされたリスト(リストのリスト)の中から、各行の最大値と最小値の差が最も小さい行を取得したい場面があります。このような場合、リスト内包表記と組み込み関数のmin()、max()を組み合わせることで、簡潔かつ読みやすく実装できます。
サンプルコード
以下に、具体的な実装例を示します。
my_list = [[41, 1, 38], [25, 33, 1], [13, 44, 65], [1, 22]]
print("The list is : ")
print(my_list)
my_min_val = min([max(elem) - min(elem) for elem in my_list])
my_result = [elem for elem in my_list if max(elem) - min(elem) == my_min_val]
print("The result is : ")
print(my_result)
出力結果
The list is : [[41, 1, 38], [25, 33, 1], [13, 44, 65], [1, 22]] The result is : [[1, 22]]
処理の流れと解説
まず、複数の行を持つリスト(リストのリスト)を定義し、コンソールに表示します。
リスト内包表記を使って各行を反復処理し、それぞれの行における最大値と最小値の差を計算します。
その差の中からmin()関数で最小値を求め、変数に代入します。この例では、[1, 22] の差である21が最小値となります。
再度リスト内包表記を使用し、最大値と最小値の差が先ほど求めた変数と一致する行のみを抽出します。
抽出した結果を変数に格納し、コンソールへ出力します。
補足ポイント
上記のコードでは、リスト全体を2回走査しているため、データサイズが大きい場合はやや非効率になる可能性があります。パフォーマンスを重視する場合は、あらかじめ各行の max() と min() の値を計算して保持しておくことで、計算量を削減できます。また、条件に一致する行が複数存在する場合も、この方法ならすべて抽出できる点が利点です。
-
Pythonのリストとタプルの違いを徹底解説!特徴と使い分けのポイント
この記事では、Pythonにおけるリスト(list)とタプル(tuple)の違いについて詳しく解説します。リストとタプルは、Pythonでデータを格納するために使われる代表的な2つのデータ構造です。どちらも異なる型のデータをまとめて扱うことができますが、それぞれに重要な特徴があります。リスト(list)とはリストは「シーケンス」とも呼ばれ、Pythonで最も頻繁に使われるデータ型の一つです。柔軟性が高く、さまざまな場面で活用できるのが魅力です。リストを作成するには、すべての要素を角括弧 [ ] の中に入れ、要素同士をカンマで区切ります。リストには任意の数の要素を格納でき、整数・浮動小数点数・文
-
【Python】リストの値を複数の変数に一括代入する3つの方法
プログラムの要件によっては、リストに格納された複数の値を一度に複数の変数へ代入し、以降の計算処理などで活用したい場面があります。本記事では、このような処理を実現するためのさまざまなアプローチを、サンプルコードと実行結果とともに紹介します。 for文(リスト内包表記)を使う方法 forループとリスト内包表記を組み合わせると、指定したインデックス位置の要素を順番に取り出しながら、宣言した変数へ代入できます。どのインデックスの値をどの変数に割り当てるかを明示的に指定できるのが特徴です。 サンプルコード listA = [Mon, 2pm, 1.5, 11 miles] # 元のリスト pr