PythonでリストからNとの距離がK以内の要素を削除する方法
Pythonでは、リスト内の要素のうち、特定の基準値Nとの距離がK以内である要素を削除したいケースがあります。こうした処理を実現するには、リスト内包表記と条件式を組み合わせるのが最もシンプルで効率的な方法です。
以下に具体的な実装例を示します。
サンプルコード
my_list = [13, 52, 5, 45, 65, 61, 18]
print("The list is :")
print(my_list)
K = 3
print("The value of K is ")
print(K)
N = 5
print("The value of N is ")
print(N)
my_result = [element for element in my_list if element < N - K or element > N + K]
print("The result is:")
print(my_result)実行結果
The list is : [13, 52, 5, 45, 65, 61, 18] The value of K is 3 The value of N is 5 The result is: [13, 52, 45, 65, 61, 18]
処理の解説
まず、整数のリストを定義し、コンソールに表示します。
削除対象となる距離の閾値Kを定義し、コンソールに表示します。
基準となる値Nを定義し、コンソールに表示します。
リスト内包表記を使って各要素を順に走査し、「N − K より小さい」または「N + K より大きい」という条件を満たしているかどうかを判定します。つまり、Nとの差がK以内(N−K 以上 かつ N+K 以下)に収まる要素は除外されます。
条件を満たした要素のみが新しいリストに格納されます。
その結果は変数 my_result に代入されます。
最後に、結果がコンソールへ出力されます。
動作のポイント
この例では N = 5、K = 3 なので、削除対象の範囲は「2 以上 8 以下」(5−3=2 〜 5+3=8)になります。元のリスト [13, 52, 5, 45, 65, 61, 18] の中でこの範囲に該当するのは 5 のみのため、これが除外され、結果として [13, 52, 45, 65, 61, 18] が出力されます。
リスト内包表記を活用すれば、for文やif文を個別に書く必要がなく、簡潔で読みやすいコードになります。数値データのフィルタリングやノイズ除去など、さまざまな場面で応用できるテクニックなので、ぜひ覚えておきましょう。
-
Pythonで1からnまでの連続する要素を持つリストを生成する方法
この記事では、数値 n が与えられたときに、1からnまでの連続した整数を要素として持つ、サイズnのリストを作成するプログラムを紹介します。例えば、入力が n = 5 の場合、出力は次のようになります。[1, 2, 3, 4, 5]解決のアプローチこの問題は、Pythonのリスト内包表記(リストコンプリヘンション)を使うことで、簡潔かつ効率的に解くことができます。手順は以下の通りです。リスト内包表記を活用して問題を解決します。range() 関数を使用し、1からnまでの各値 i に対して i を要素とするリストを生成します。range() の第1引数には下限値として 1 を指定し、第2引数には上
-
Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法
PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa