リストから回文(パリンドローム)要素を削除するPythonプログラム
リストから回文(パリンドローム)となる要素を取り除きたい場面は少なくありません。そんなときは、リスト内包表記と「not」演算子を組み合わせることで、シンプルかつ効率的に実現できます。
回文(パリンドローム)とは?
回文とは、前から読んでも後ろから読んでも同じになる文字列や数値のことです。たとえば「4」「8」「9」「11」「121」などが該当します。本記事では、リスト内に含まれるこうした回文の数値要素を削除する方法を紹介します。
サンプルコード
以下に具体的な実装例を示します。
my_list = [56, 78, 12, 32, 4, 8, 9, 100, 11]
print("元のリスト:")
print(my_list)
my_result = [elem for elem in my_list if int(str(elem)[::-1]) not in my_list]
print("処理後のリスト:")
print(my_result)
出力結果
元のリスト: [56, 78, 12, 32, 4, 8, 9, 100, 11] 処理後のリスト: [56, 78, 12, 32, 100]
処理の流れと解説
まず、対象となるリストを定義し、コンソールに表示します。
リスト内包表記を使って各要素を順番に走査し、要素を一度文字列に変換してからスライス構文
[::-1]で逆順に並べ替え、その後整数に戻します。反転した値が元のリストに存在しない場合のみ、その要素を新しいリストに残します。回文は反転しても同じ値になるため、自動的に除外されます。
このようにして生成された新しいリストを変数に代入します。
最後に、結果をコンソールに出力して確認します。
この手法なら、forループやif文を明示的に書く必要がなく、わずか1行のコードで回文要素を簡潔に除去できるのが大きなメリットです。可読性が高く、Pythonらしいイディオマティックな書き方といえるでしょう。
-
Pythonでリストから重複する要素を抽出して表示する方法
この記事では、数値のリストの中から重複している要素(2回以上出現する、リスト内で一意ではない要素)をすべて抽出して表示するPythonプログラムを解説します。実行例入力: given_list = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] 出力: desired_output = [3, 9, 12] 入力: given_list = [-27, 4, 29, -27, -2, -99, 123, 499, -99] 出力: desired_output = [-27, -99]負の数値が含まれる場合でも正しく動作することがわかります。重複要素を検出する
-
Pythonでリストから重複要素を削除する方法を徹底解説
重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。 実行例 入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90] アルゴリズム 重複要素を削除するための基本的な手順は以下の通りです。 元となるリストを作成する。 空の新しいリストを用意する。 元のリストの各要素を先頭から順番に走査する。 その要素が新しいリストにまだ存在しないかどうかを判定する。 存在しない場合のみ、新しいリストへ要素を追加する。