Pythonでリスト内の重複要素を検出し、番号を付けてマークする方法
文字列やリストの中に含まれる重複要素をマークしたい場合、Pythonではリスト内包表記とcount()メソッドを組み合わせることで、簡潔に実現できます。この記事では、重複している要素に対して出現順の通し番号を付与する方法を、サンプルコードとともに解説します。
サンプルコード
以下は、リスト内の重複要素を検出して番号を付ける実装例です。
my_list = ["python", "is", "fun", "python", "is", "fun", "python", "fun"]
print("The list is :")
print(my_list)
my_result = [value + str(my_list[:index].count(value) + 1) if my_list.count(value) > 1 else value for index, value in enumerate(my_list)]
print("The result is :")
print(my_result)
実行結果
The list is : ['python', 'is', 'fun', 'python', 'is', 'fun', 'python', 'fun'] The result is : ['python1', 'is1', 'fun1', 'python2', 'is2', 'fun2', 'python3', 'fun3']
コードの解説
まず、重複を含むリストを定義し、コンソールに表示します。
リスト内包表記と
enumerate()を使って、各要素とそのインデックスを順に取り出します。count()メソッドで特定の値の出現回数を調べ、回数が1より大きい場合(=重複している場合)は、スライスmy_list[:index]に対してcount()を呼び出し、「それ以前に出現した回数 + 1」を文字列として要素名に連結します。これにより、同じ値でも
python1、python2、python3のように出現順の連番が自動的に付けられます。重複していない要素は、元の値がそのまま使用されます。
処理結果は変数
my_resultに代入され、最後にコンソールへ出力されます。
この手法のポイントは、スライス my_list[:index] を使うことで「現在位置より前」の出現回数だけを数えられる点です。これにより、重複要素ごとに正しい通し番号を振ることができます。データの前処理やログ解析など、重複の識別が必要な場面で役立つテクニックです。
-
Pythonで文字列内の単語数を数えるプログラムの書き方【初心者向け】
テキスト処理を行っていると、「入力された文字列の中に単語がいくつ含まれているのか」「特定の単語が何回出現するのか」を調べたい場面によく出会います。この記事では、Pythonを使って文字列内の単語数を数え、その結果を出力する複数の方法を、サンプルコードと実行結果付きでわかりやすく解説します。 基本的な考え方はシンプルです。「単語は空白・改行・タブなどの区切り文字で分けられている」ため、区切り文字の出現回数を数えれば、単語数は「区切り文字の数+1」として求められます。 方法1:forループを使う まずは最も基本的な方法です。文字列を1文字ずつ順番に調べ、区切り文字が見つかるたびにカウントを1
-
文字列内の単語の出現回数をカウントするPythonプログラムの作成方法
この記事では、ユーザーから入力された文字列の中に、指定した単語が何回出現するかをカウントし、その結果を出力するPythonプログラムを紹介します。文字列操作の基礎を学ぶのに最適な題材です。 実行例 入力:Python is an interpreted high-level programming language for general purpose programming. カウントする単語:programming 出力:2 上記の例では、「programming」という単語が文中に2回出現しているため、出力は「2」となります。 アルゴリズム wordoccurences(n, p