Python
 Computer >> コンピューター >  >> プログラミング >> Python

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」を文字列として要素名に連結します。

  • これにより、同じ値でも python1python2python3 のように出現順の連番が自動的に付けられます。

  • 重複していない要素は、元の値がそのまま使用されます。

  • 処理結果は変数 my_result に代入され、最後にコンソールへ出力されます。

この手法のポイントは、スライス my_list[:index] を使うことで「現在位置より前」の出現回数だけを数えられる点です。これにより、重複要素ごとに正しい通し番号を振ることができます。データの前処理やログ解析など、重複の識別が必要な場面で役立つテクニックです。

  1. Pythonで文字列内の単語数を数えるプログラムの書き方【初心者向け】

    テキスト処理を行っていると、「入力された文字列の中に単語がいくつ含まれているのか」「特定の単語が何回出現するのか」を調べたい場面によく出会います。この記事では、Pythonを使って文字列内の単語数を数え、その結果を出力する複数の方法を、サンプルコードと実行結果付きでわかりやすく解説します。 基本的な考え方はシンプルです。「単語は空白・改行・タブなどの区切り文字で分けられている」ため、区切り文字の出現回数を数えれば、単語数は「区切り文字の数+1」として求められます。 方法1:forループを使う まずは最も基本的な方法です。文字列を1文字ずつ順番に調べ、区切り文字が見つかるたびにカウントを1

  2. 文字列内の単語の出現回数をカウントするPythonプログラムの作成方法

    この記事では、ユーザーから入力された文字列の中に、指定した単語が何回出現するかをカウントし、その結果を出力するPythonプログラムを紹介します。文字列操作の基礎を学ぶのに最適な題材です。 実行例 入力:Python is an interpreted high-level programming language for general purpose programming. カウントする単語:programming 出力:2 上記の例では、「programming」という単語が文中に2回出現しているため、出力は「2」となります。 アルゴリズム wordoccurences(n, p