カテゴリ: Python 更新日: 2025/12/18

Pythonでセットを使って重複を簡単に取り除く方法を徹底解説!初心者でも理解できる基礎知識

Pythonでセットを使って重複を簡単に取り除く方法
Pythonでセットを使って重複を簡単に取り除く方法

先生と生徒の会話形式で理解しよう

生徒

「Pythonで、同じ値が何度も入っているリストから重複を取り除くにはどうすればいいですか?」

先生

「Pythonではset(セット)というデータ型を使うことで、簡単に重複を取り除くことができます。」

生徒

「setってなんですか?リストや辞書とは違うんですか?」

先生

「それでは、setの特徴や使い方、そして重複を除去する方法について、順を追って解説していきましょう。」

1. set(セット)とは何か?Pythonで重複を除くのに最適なデータ型

1. set(セット)とは何か?Pythonで重複を除くのに最適なデータ型
1. set(セット)とは何か?Pythonで重複を除くのに最適なデータ型

Pythonにおけるset(セット)は、重複しない値の集まり(集合)を管理するための組み込みデータ型です。リストのように複数の値を保存できますが、同じ値が複数存在した場合は自動的に1つにまとめられます

たとえば、以下のようなリストがあるとします:


items = ["A", "B", "A", "C", "B"]

このリストには「A」と「B」が重複して含まれています。set()を使えば、これらを簡単に取り除けます。


unique_items = set(items)
print(unique_items)

{'B', 'C', 'A'}

このように、順番は保証されませんが、重複は自動で除去されます

2. setを使ってリストの重複を取り除く基本的な方法

2. setを使ってリストの重複を取り除く基本的な方法
2. setを使ってリストの重複を取り除く基本的な方法

setを使うことで、1行のコードで重複を除いた結果を得ることができます。以下に具体的な例を示します:


numbers = [1, 2, 2, 3, 4, 4, 5]
no_duplicates = list(set(numbers))
print(no_duplicates)

[1, 2, 3, 4, 5]

ここでは、まずset(numbers)で重複を取り除き、その後list()でリストに戻しています。順番に意味がある場合は、後述の方法を検討してください。

3. setによる重複除去の注意点:順番が維持されない

3. setによる重複除去の注意点:順番が維持されない
3. setによる重複除去の注意点:順番が維持されない

Pythonのset型は、データの順番を記録しません。そのため、元のリストの順番を保持したい場合には注意が必要です。

順序を保ったまま重複を取り除く方法としては、forループを使って手動で実装する方法があります:


words = ["apple", "banana", "apple", "orange", "banana"]
seen = set()
result = []

for word in words:
    if word not in seen:
        seen.add(word)
        result.append(word)

print(result)

['apple', 'banana', 'orange']

この方法では、元の順番を保ったまま、重複を除去できます。

4. setの活用例:大量データの整理に最適

4. setの活用例:大量データの整理に最適
4. setの活用例:大量データの整理に最適

setを使うことで、以下のような実用的な場面で効率的に処理ができます。

  • CSVファイルなどのデータに重複が含まれているときに、ユニークな値だけを抽出
  • ユーザーが入力したキーワードから、重複を除いて統一リストを作成
  • Webスクレイピングで取得したリンクの重複を除去

たとえば、以下は文字列リストの重複を除いた一例です:


emails = ["a@example.com", "b@example.com", "a@example.com"]
unique_emails = list(set(emails))
print(unique_emails)

['b@example.com', 'a@example.com']

5. set型の作成方法と基本操作

5. set型の作成方法と基本操作
5. set型の作成方法と基本操作

set型は、{}を使って直接作成するか、set()関数で他のデータ型(例:リスト、文字列など)から作成できます。

1. 空のsetを作成する

empty_set = set()
2. 要素を追加する

colors = {"赤", "青"}
colors.add("緑")
print(colors)
3. 要素を削除する

colors.remove("青")

このように、setは重複を避けつつ必要な操作が簡潔に行える、非常に効率的なデータ型です。

6. setを活用する上での補足情報

6. setを活用する上での補足情報
6. setを活用する上での補足情報

Pythonのset型は、重複除去のほかにもさまざまな用途で使われますが、特に初心者にとって理解しておきたいのは以下の点です:

  • setはミュータブル(変更可能)なオブジェクトです。
  • setと似たもので、frozenset(変更不可なセット)もありますが、初心者は通常のsetを使えば十分です。
  • 重複を除去した結果を再度ソートしたい場合はsorted()関数を使います。

data = [4, 2, 3, 2, 1, 3]
unique_sorted = sorted(set(data))
print(unique_sorted)

[1, 2, 3, 4]

このように、setと他の関数を組み合わせることで、簡潔かつ効率的にデータを整形することが可能となります。

まとめ

まとめ
まとめ

Pythonのsetを使って重複を取り除く考え方の整理

ここまでの記事では、Pythonのsetを使って重複データを簡単に取り除く方法について、基礎から実用的な使い方まで段階的に学んできました。 Pythonでプログラミングを始めたばかりの方にとって、リストの中に同じ値が何度も入ってしまう問題はとても身近なものです。 setは、そのような重複を自動的に排除してくれる便利なデータ型であり、データ整理や前処理を効率良く進めるための強力な味方になります。

setの最大の特徴は「同じ値を二つ以上持たない」という点です。 リストやタプルでは許されていた重複が、setに変換した瞬間に一つにまとめられます。 この性質を理解しておくだけで、重複除去のために複雑な条件分岐やループを書かなくても済むようになります。 特に初心者の方にとっては、コードが短く読みやすくなる点も大きなメリットと言えるでしょう。

一方で、setは要素の順番を保持しないという注意点もありました。 元のリストの順序が重要な場合には、setだけに頼るのではなく、for文と組み合わせて使う方法が有効です。 seenというsetで「すでに出てきた値」を管理しつつ、結果用のリストに追加していく方法は、Pythonらしい書き方でありながら、実務でもよく使われています。 こうした使い分けを理解することで、setをより柔軟に活用できるようになります。

setが活躍する実務的なシーン

setによる重複除去は、学習用のサンプルだけでなく、実際の開発やデータ処理の現場でも頻繁に使われます。 例えば、CSVファイルやログデータを扱う場面では、同じ値が何度も出現することが珍しくありません。 そのような場合、setを使ってユニークな値だけを抽出することで、処理速度を上げつつ、データの見通しを良くすることができます。

また、Webスクレイピングで取得したURLの一覧や、ユーザー入力によるキーワードの集合など、重複を許したくないデータにもsetは最適です。 リストのまま扱うよりも、setに変換するだけで自然に整理された状態になるため、後続の処理がとても楽になります。 Python初心者のうちから、このようなデータ構造の選び方を意識できるようになると、コード全体の質も自然と向上していきます。

まとめとしてのサンプルプログラム

最後に、今回学んだsetによる重複除去の考え方を確認するための、シンプルなサンプルプログラムを見てみましょう。 リストをsetに変換し、必要に応じて順序を保つ方法も含めた例になっています。


data = ["りんご", "みかん", "りんご", "ぶどう", "みかん"]

unique_data = list(set(data))
print(unique_data)

seen = set()
ordered_unique = []

for item in data:
    if item not in seen:
        seen.add(item)
        ordered_unique.append(item)

print(ordered_unique)

このように、目的に応じてsetの使い方を選ぶことで、重複データの扱いに悩むことが少なくなります。 Pythonの基本データ型であるsetを正しく理解しておくことは、今後の学習や実務において大きな財産になるでしょう。

先生と生徒の振り返り会話

生徒

「setを使うだけで、こんなに簡単に重複が消えるのは驚きでした。 今までfor文で必死にチェックしていたのが、少し恥ずかしいです。」

先生

「それはとても自然なことですよ。 Pythonには便利なデータ型がたくさんあるので、仕組みを知ることで一気に楽になります。」

生徒

「順番が保たれない点だけは注意が必要なんですね。 使い分ける理由もよく分かりました。」

先生

「その理解はとても大切です。 何でもsetにすれば良いわけではなく、データの性質を考えて選ぶことが重要です。」

生徒

「これからは、重複が出たらまずsetを思い出すようにします。」

先生

「それで大丈夫です。 今日学んだsetの基礎をしっかり身につけて、Pythonでのデータ処理をもっと楽しんでいきましょう。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説