Python の set を使って重複要素を簡単に削除する

black and yellow box on white table

本記事では、Python の set を使用して、リストや他のコレクションから重複要素を効率的に削除する方法について説明します。 また、set による重複削除の使い所や、別のやり方で重複を削除する方法についても触れます。

Python の set とは?

Python の set は、順序がなく、ユニークな要素のみを格納するデータ構造です。 それぞれの要素は一度だけ現れます。したがって、set() を使うことで、自動的に重複が削除されることになります。 set を使った重複要素の削除 リストや他のコレクションから重複要素を削除するには、次のように set を使います。

original_list = [1, 2, 2, 3, 4, 4, 5]

# 重複要素を削除
unique_list = list(set(original_list))

print(unique_list) # 出力: [1, 2, 3, 4, 5]

この例では、original_list から重複要素を削除するために、リストを set に変換し、その後再度リストに戻しています。

使い所

set を使った重複要素の削除は、以下のようなシチュエーションで役立ちます。 データ解析や前処理で、重複するデータポイントを削除する必要がある場合 ユーザーからの入力データに重複がある場合 データベースや CSV ファイルから取得したデータで、重複したレコードを削除する必要がある場合

他の重複削除の方法

set 以外にも、Python では重複要素を削除する方法がいくつかあります。例えば、次のような方法が挙げられます。

リスト内包表記と if 文を使った方法

リスト内包表記と if 文を使って、リストから重複要素を削除することもできます。

original_list = [1, 2, 2, 3, 4, 4, 5]

unique_list = []
[unique_list.append(x) for x in original_list if x not in unique_list]

print(unique_list) # 出力: [1, 2, 3, 4, 5]

ただし、この方法はリストの要素数 が大きい場合には、パフォーマンスが低下することがあります。なぜなら、リストの要素を一つずつチェックして重複を削除するため、計算量が増えるからです。

辞書を使った方法

辞書を使って、リストから重複要素を削除することもできます。

original_list = [1, 2, 2, 3, 4, 4, 5]

unique_list = list(dict.fromkeys(original_list).keys())

print(unique_list) # 出力: [1, 2, 3, 4, 5]

この方法では、リストの要素を辞書のキーとして利用し、dict.fromkeys() を使って新しい辞書を作成します。 その後、keys() メソッドで辞書のキーを取得し、リストに変換します。 ただし、これらの方法は、元のリストの要素がハッシュ可能(つまり、辞書のキーとして使用できる)であることが前提です。 ハッシュ不可能な要素が含まれる場合、set など他の方法で重複を削除する必要があります。

まとめ

Python の set を使って、リストや他のコレクションから重複要素を効率的に削除する方法を紹介しました。 また、set による重複削除の使い所や、別のやり方で重複を削除する方法についても触れました。 データ解析や前処理など、様々なシチュエーションで重複要素の削除が求められるため、set などの適切な手法を選択することが重要です。