Pythonでリストから重複要素を削除する方法を徹底解説
重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。
実行例
入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90]
アルゴリズム
重複要素を削除するための基本的な手順は以下の通りです。
- 元となるリストを作成する。
- 空の新しいリストを用意する。
- 元のリストの各要素を先頭から順番に走査する。
- その要素が新しいリストにまだ存在しないかどうかを判定する。
- 存在しない場合のみ、新しいリストへ要素を追加する。
- すべての走査が終わったら、新しいリストを表示する。
サンプルコード
# 重複要素を削除する関数
def remove_duplicate_ele(A):
newlist = []
for n in A:
if n not in newlist:
newlist.append(n)
return newlist
# ドライバーコード
A = list()
n = int(input("リストのサイズを入力してください ::"))
print("数値を入力してください ::")
for i in range(int(n)):
k = int(input(""))
A.append(int(k))
print("新しいリストは ::>", remove_duplicate_ele(A))
実行結果
リストのサイズを入力してください ::5 数値を入力してください :: 10 20 30 20 10 新しいリストは ::> [10, 20, 30]
このコードでは、ユーザーからリストのサイズと各要素を受け取り、remove_duplicate_ele()関数によって重複のない新しいリストを生成しています。in演算子による存在チェックがポイントです。
別の方法:set()やdict.fromkeys()を使った簡潔な記述
Pythonでは、組み込み機能を活用することで、より短いコードで重複を削除できます。
# set()を使う方法(要素の順序は保持されない) A = [2, 3, 4, 3, 4, 6, 78, 90] result = list(set(A)) print(result) # [2, 3, 4, 6, 78, 90] # dict.fromkeys()を使う方法(元の順序を保持) result = list(dict.fromkeys(A)) print(result) # [2, 3, 4, 6, 78, 90]
set()は重複を自動的に排除しますが、要素の並び順が変わる可能性がある点に注意が必要です。元の順序を維持したい場合は、Python 3.7以降で挿入順が保証されている辞書の特性を利用したdict.fromkeys()が便利です。
まとめ
リストから重複要素を削除する基本は、「空のリストを用意し、存在チェックをしながら要素を追加していく」というアプローチです。処理の流れを理解したい初心者にはこの方法がおすすめですが、実務ではset()やdict.fromkeys()を使えば簡潔かつ高速に記述できます。データの規模や順序の必要性に応じて、最適な方法を選択しましょう。
-
PythonでリストからN個の最大要素を取得する方法
整数のリストが与えられたとき、その中からN個の大きな要素を取り出して新しいリストとして返すのが、ここでの課題です。本記事では、基本的なループ処理による方法から、Python標準ライブラリを活用した効率的な方法まで、サンプルコードとともに解説します。 例 入力 : [40, 5, 10, 20, 9] N = 2 出力 : [40, 20] アルゴリズム 整数のリストと、取得する要素数Nを受け取ります。 N回のループを実行します。 各ループでリスト内の最大値を探し、新しいリストに格納すると同時に元のリストから削除します。 実装コード def Nnumberele(list1, N):
-
Pythonでインデックスを指定してリストから要素を削除する方法
Pythonでリストからインデックスを指定して要素を削除するには、主に2つの方法があります。del文を使う方法と、pop()メソッドを使う方法です。 del文で要素を削除する del文は、削除したい要素のインデックスを指定して使用します。指定した位置の要素がリストから取り除かれます。 >>> L1=[11,22,33,44,55,66,77] >>> del L1[2] >>> L1 [11, 22, 44, 55, 66, 77] 上記の例では、インデックス2(3番目の要素「33」)が削除され、リストの要素数が1つ減っています。del文は