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