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らしい簡潔な書き方として広く使われています。用途や可読性の好みに応じて使い分けるとよいでしょう。
-
【Python入門】リスト内でKより大きい数値のインデックスを取得する方法
このチュートリアルでは、Pythonを使って、リスト内の指定した数値 K より大きい要素のインデックス(位置)を求める方法を解説します。初心者にもわかりやすいように、代表的な2つのアプローチを順番に見ていきましょう。 方法1:forループとrange()を使う方法 最も基本的な解決方法は、ループ処理を使うことです。処理の手順は以下の通りです。 リストと基準値 K を初期化する リストの長さをもとに、range() でインデックスを順に走査する 要素が K より大きい場合、そのインデックスを出力する サンプルコード # リストとKを初期化 numbers = [3, 4, 5, 23, 12
-
Pythonのリスト(list)とタプル(tuple)の違いを徹底解説!使い分けのポイント
Pythonには複数の値をまとめて扱うためのデータ構造として「リスト(list)」と「タプル(tuple)」が用意されています。どちらもシーケンス型の一種で似たような使い方ができますが、「変更可能かどうか」「処理速度」「メモリ効率」などの点で大きな違いがあります。この記事では、それぞれの特徴とコード例、そして6つの観点からの比較表を使って、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list)とはリストは、異なる型のオブジェクトを格納できるミュータブル(変更可能)なコンテナです。要素の追加・削除・変更が自由に行えるため、データの入れ替えや繰り返し処理(イテレーション)によく