Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで極値の差がKより大きいリストを抽出する方法

Pythonでは、リスト内の各要素(サブリスト)について、最大値と最小値の差が指定した閾値Kより大きいものだけを抽出したい場面があります。このような処理は、リスト内包表記と組み込み関数のmin()およびmax()を組み合わせることで、簡潔に実装できます。

実装例

以下に、極値の差がKより大きいリストを抽出するコードの例を示します。

my_list = [[13, 52, 11], [94, 12, 21], [23, 45, 23], [11, 16, 21]]

print("元のリスト :")
print(my_list)

key = 40

my_result = [element for element in my_list if max(element) - min(element) > key]

print("結果 :")
print(my_result)

出力

元のリスト :
[[13, 52, 11], [94, 12, 21], [23, 45, 23], [11, 16, 21]]
結果 :
[[13, 52, 11], [94, 12, 21]]

コードの解説

  • まず、複数の数値リストを含むネストされたリスト(リストのリスト)を定義し、コンソールに表示します。
  • 次に、判定基準となる閾値K(ここでは変数key)を定義します。
  • リスト内包表記を使って元のリストを走査し、各要素に対してmax(element) - min(element)で最大値と最小値の差を計算し、その差がkeyより大きいかどうかを判定します。
  • 条件を満たす要素だけが新しいリストとして収集され、変数my_resultに代入されます。
  • 最後に、その結果をコンソールに出力します。

処理内容の確認

例えば、[13, 52, 11]の場合、最大値52から最小値11を引くと41となり、閾値40より大きいため抽出対象になります。一方、[23, 45, 23]の場合は45 − 23 = 22となり、40以下なので除外されます。このように、各サブリストの値のばらつき(範囲)に基づいてフィルタリングを行うことができます。

まとめ

リスト内包表記とmin()max()を組み合わせることで、極値の差によるフィルタリングをわずか1行で実現できます。データ分析などで外れ値や分散の大きいグループを検出したい場合にも応用できる、シンプルで実用的なテクニックです。

  1. 【Python】リストの値を複数の変数に一括代入する3つの方法

    プログラムの要件によっては、リストに格納された複数の値を一度に複数の変数へ代入し、以降の計算処理などで活用したい場面があります。本記事では、このような処理を実現するためのさまざまなアプローチを、サンプルコードと実行結果とともに紹介します。 for文(リスト内包表記)を使う方法 forループとリスト内包表記を組み合わせると、指定したインデックス位置の要素を順番に取り出しながら、宣言した変数へ代入できます。どのインデックスの値をどの変数に割り当てるかを明示的に指定できるのが特徴です。 サンプルコード listA = [Mon, 2pm, 1.5, 11 miles] # 元のリスト pr

  2. 【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

    リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう