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

Pythonでリストの重複要素を出力するプログラムの書き方

リスト(配列)の中から重複している要素を見つけて出力したい場合、リストの各要素を順番に取り出して比較する、ネストされたループ(二重ループ)を使うのが基本的なアプローチです。

以下に具体的な実装例を示します。

サンプルコード

my_list = [1, 2, 5, 6, 8, 9, 3, 4, 8, 9, 1, 8]
print("リストの内容 :")
print(my_list)
print("重複している要素は次のとおりです : ")
for i in range(0, len(my_list)):
    for j in range(i+1, len(my_list)):
        if(my_list[i] == my_list[j]):
            print(my_list[j])

実行結果

リストの内容 :
[1, 2, 5, 6, 8, 9, 3, 4, 8, 9, 1, 8]
重複している要素は次のとおりです :
1
8
8
9
8

コードの解説

  • まずリストを定義し、その内容をコンソールに表示します。

  • 外側のループで先頭の要素から順に取り出し、内側のループでそれ以降の要素と1つずつ比較します。

  • 値が一致した場合、その要素は重複していると判断されます。

  • 一致した要素がコンソールに出力されます。

なお、この方法では同じ値が3回以上出現すると、出力にも同じ値が複数回現れます(例では「8」が3回出力されています)。重複を1回だけ表示したい場合は、後述の方法が便利です。

補足:collections.Counterを使った効率的な方法

標準ライブラリの collections.Counter を使うと、より簡潔かつ効率的に重複要素を検出できます。

from collections import Counter

my_list = [1, 2, 5, 6, 8, 9, 3, 4, 8, 9, 1, 8]

counter = Counter(my_list)
duplicates = [item for item, count in counter.items() if count > 1]

print("重複している要素は次のとおりです :")
print(duplicates)

このコードでは、各要素の出現回数をカウントし、出現回数が2以上の要素だけをリストとして抽出しています。二重ループ方式は計算量がO(n²)になるのに対し、Counterを使う方法はO(n)で処理できるため、要素数が多いリストでも高速に動作します。実務ではこちらの方法が推奨されます。

  1. Pythonで文字「G」のパターンを出力するプログラム

    コンソールにアスタリスク(*)を使って文字「G」のパターンを表示したい場合、専用の関数を定義し、二重ループ(ネストされたループ)で行と列を走査しながら、条件に合致する位置だけ「*」を出力する方法が有効です。以下に実際の実装例を示します。サンプルコードdef display_pattern(my_line): my_pattern = for i in range(my_line): for j in range(my_line): if ((j == 1 and i != 0 and i != my_line - 1)

  2. Pythonで2つのリストの共通要素をすべて出力する方法

    2つのリストが与えられたとき、両方のリストに共通して含まれるすべての要素を出力するPythonプログラムを紹介します。この問題は、セット(set)型の集合演算を使うことで、シンプルかつ効率的に解決できます。 実行例 入力 : L1 = [5, 6, 7, 8, 9] L2 = [5, 13, 34, 22, 90] 出力 : {5} 説明 上記の例では、2つのリストのどちらにも存在する要素は「5」だけなので、出力は {5} となります。 アルゴリズム 処理の手順は以下のとおりです。 ステップ1 : ユーザーから入力を受け取り、2つのリストを作成する。 ステップ2 : 各リ