【Python】リスト内の差がK未満の要素を削除する方法
リスト内の要素同士の差がKよりも小さい場合に、そのような要素を削除したい場面はよくあります。このような処理には、単純な反復処理(ループ)と「if」条件文を組み合わせるのが効果的です。
サンプルコード
以下に具体的な実装例を示します。
my_list = [13, 29, 24, 18, 40, 15]
print("The list is :")
print(my_list)
K = 3
my_list = sorted(my_list)
index = 0
while index < len(my_list) - 1:
if my_list[index] + K > my_list[index + 1]:
del my_list[index + 1]
else:
index += 1
print("The result is :")
print(my_list)
出力結果
The list is : [13, 29, 24, 18, 40, 15] The result is : [13, 18, 24, 29, 40]
処理の流れと解説
まず対象となるリストを定義し、コンソールに表示します。
しきい値となるKの値を定義します。
インデックスとして使用する変数に0を代入します。
「sorted」関数を使ってリストを昇順にソートします。これにより、値が近い要素同士が必ず隣り合う状態になります。
whileループでリストを走査し、隣接する2つの要素の差がKより小さい場合は、後ろ側の要素を削除します。
差がK以上の場合は、インデックスを1つ進めて次のペアの比較へ移ります。
最終的に処理されたリストがコンソールに出力されます。
ポイント
あらかじめソートしておくことがこのアルゴリズムの鍵です。ソートによって差の小さい要素が隣接するため、一度の走査だけで条件に該当する要素をすべて検出できます。また、「del」で要素を削除した際にインデックスを進めないことで、削除後に新たに隣り合った要素の組み合わせも漏れなくチェックできる仕組みになっています。
-
【Python】リスト内のすべての値が指定した値より大きいかどうかを判定する方法
リストと基準値が与えられたとき、リスト内のすべての要素がその基準値より大きいかどうかを判定するプログラムです。条件を満たしていれば「Yes」、一つでも基準値以下の要素が存在すれば「No」を出力します。 実行例 入力 : A=[10, 20, 30, 40, 50] 基準値 = 20 出力 : No 入力 : A=[10, 20, 30, 40, 50] 基準値 = 5 出力 : Yes アルゴリズム ステップ1: ユーザーから入力を受け取り、リストを作成する。 ステップ2: 基準値(チェック用の値)を入力する。 ステップ3: forループでリストを走査する。 ステップ3.1: 各要素を基準
-
Pythonでリストから重複要素を削除する方法を徹底解説
重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。 実行例 入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90] アルゴリズム 重複要素を削除するための基本的な手順は以下の通りです。 元となるリストを作成する。 空の新しいリストを用意する。 元のリストの各要素を先頭から順番に走査する。 その要素が新しいリストにまだ存在しないかどうかを判定する。 存在しない場合のみ、新しいリストへ要素を追加する。