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

Pythonで差がKより大きいタプルを削除する方法

Pythonで差がKより大きいタプルを削除する方法

リストに含まれるタプルのうち、要素間の差が特定の値Kより大きいタプルを削除したい場合があります。このような処理は、組み込み関数 abs() を使うことで簡単に実現できます。abs() は絶対値を返すため、タプル内の要素の順序に関係なく、正確に差を計算できるのがポイントです。

サンプルコード

my_tuple = [(41, 18), (21,57), (39, 22), (23, 42), (22, 10)]
print("The tuple is :")
print(my_tuple)
K = 20
my_result = [element for element in my_tuple if abs(element[0] - element[1]) <= K]
print("The result is :")
print(my_result)

出力結果

The tuple is :
[(41, 18), (21, 57), (39, 22), (23, 42), (22, 10)]
The result is :
[(39, 22), (23, 42), (22, 10)]

コードの解説

  • まず、複数のタプルを含むリストを定義し、コンソールに表示します。

  • 比較の基準となる値 K を定義します(ここでは 20)。

  • リスト内包表記を使ってリストを反復処理し、各タプルの第1要素と第2要素の差の絶対値が K 以下であるかどうかを判定します。

  • 条件を満たすタプルだけが新しいリストとして変数 my_result に代入されます。

  • 最後に、フィルタリングされた結果をコンソールに表示します。

上記の出力を見ると、元のリストから (41, 18) と (21, 57) の2つのタプルが除外されていることがわかります。これらは要素間の差がそれぞれ 23 と 36 であり、K の値である 20 より大きいためです。

filter() 関数を使った別の書き方

同じ処理は、filter() 関数と lambda 式を組み合わせても実現できます。

my_result = list(filter(lambda element: abs(element[0] - element[1]) <= K, my_tuple))

どちらの方法でも結果は同じですが、リスト内包表記の方がPythonらしい簡潔な書き方として広く使われています。用途や可読性の好みに応じて使い分けるとよいでしょう。

  1. 【Python入門】リスト内でKより大きい数値のインデックスを取得する方法

    このチュートリアルでは、Pythonを使って、リスト内の指定した数値 K より大きい要素のインデックス(位置)を求める方法を解説します。初心者にもわかりやすいように、代表的な2つのアプローチを順番に見ていきましょう。 方法1:forループとrange()を使う方法 最も基本的な解決方法は、ループ処理を使うことです。処理の手順は以下の通りです。 リストと基準値 K を初期化する リストの長さをもとに、range() でインデックスを順に走査する 要素が K より大きい場合、そのインデックスを出力する サンプルコード # リストとKを初期化 numbers = [3, 4, 5, 23, 12

  2. Pythonのリスト(list)とタプル(tuple)の違いを徹底解説!使い分けのポイント

    Pythonには複数の値をまとめて扱うためのデータ構造として「リスト(list)」と「タプル(tuple)」が用意されています。どちらもシーケンス型の一種で似たような使い方ができますが、「変更可能かどうか」「処理速度」「メモリ効率」などの点で大きな違いがあります。この記事では、それぞれの特徴とコード例、そして6つの観点からの比較表を使って、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list)とはリストは、異なる型のオブジェクトを格納できるミュータブル(変更可能)なコンテナです。要素の追加・削除・変更が自由に行えるため、データの入れ替えや繰り返し処理(イテレーション)によく