Pythonでリストから増加しない要素を削除する方法を解説
リストから増加しない(非増加)要素を削除したい場合には、シンプルな反復処理と要素同士の比較を組み合わせることで実現できます。この手法では、直前の要素よりも小さい値を除外し、単調に増加する(正確には非減少の)要素だけを新しいリストに残していきます。
サンプルコード
以下に具体的な実装例を示します。
my_list = [5,23, 45, 11, 45, 67, 89, 99, 10, 26, 7, 11]
print("The list is :")
print(my_list)
my_result = [my_list[0]]
for elem in my_list:
if elem >= my_result[-1]:
my_result.append(elem)
print("The result is :")
print(my_result)
出力
The list is : [5, 23, 45, 11, 45, 67, 89, 99, 10, 26, 7, 11] The result is : [5, 5, 23, 45, 45, 67, 89, 99]
解説
まずリストを定義し、その内容をコンソールに表示します。
リストの先頭要素を、結果を格納するための別のリストに代入します。
元のリストの各要素を順番に反復処理していきます。
各要素について、結果リストの末尾にある要素と比較し、その値以上であるかどうかを判定します。
条件を満たす場合は、その要素を結果リストに追加(append)します。
最終的に得られた結果がコンソールに出力されます。
補足
このコードは元のリスト全体(先頭要素を含む)をループ対象としているため、出力結果の先頭に同じ値が2回現れています。重複を避けたい場合は、for elem in my_list[1:] のようにスライスを使って2番目の要素からループを開始するとよいでしょう。また、この処理はリストを一度だけ走査すれば完了するため、計算量はO(n)となり、大きなデータに対しても効率的に動作します。
-
Pythonで2つのタプルリストから一致するタプルを削除する方法
はじめにPythonでプログラミングを行っていると、2つのタプルのリストを比較し、片方に存在する一致するタプルをもう片方から取り除きたい場面があります。このような処理には、リスト内包表記(list comprehension)を使うと、簡潔かつ効率的に実装できます。まず前提として、Pythonのリストは整数・浮動小数点数・文字列など、異なるデータ型の値を混在させて格納できる柔軟なデータ構造です。また、タプルのリストとは、複数のタプルを1つのリストの中にまとめたものを指します。リスト内包表記は、リストを反復処理しながら条件に合う要素だけを抽出したり、変換したりするための省略記法であり、for文や
-
Pythonでリストから重複要素を削除する方法を徹底解説
重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。 実行例 入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90] アルゴリズム 重複要素を削除するための基本的な手順は以下の通りです。 元となるリストを作成する。 空の新しいリストを用意する。 元のリストの各要素を先頭から順番に走査する。 その要素が新しいリストにまだ存在しないかどうかを判定する。 存在しない場合のみ、新しいリストへ要素を追加する。