Pythonにおけるset型(集合型)の使い方について詳しく解説します。
set型(集合型)とは
Pythonの set
型は「重複を許さないデータの集まり」を扱うための型です。 リストや辞書と違い、順序がなく、同じ値を複数入れることができないため、重複を排除したいときや、アイテムの比較・分類にとても便利です。set型の主な特徴をまとめると以下のとおりです。
- 要素の重複がなく、同じ値は1つにまとめられる
- 要素の順序がなく、インデックスでアクセスできない
- set型はリスト型よりも検索が高速(大量データの処理にも向いている)
- 集合演算ができる(和・差・積などの演算が可能)
set
型は、以下コードのように中括弧 {}
を使って作成します。辞書と似てますが、キーと値がありません。
# 勇者ぴこりの持ち物袋(集合型)
pikori_items = {"回復薬", "鉄の剣", "回復薬", "魔法の書"}
# 中身を表示
print("勇者ぴこりの持ち物:", pikori_items)
勇者ぴこりの持ち物: {‘鉄の剣’, ‘回復薬’, ‘魔法の書’}
実行結果のとおり、重複した "回復薬"
は1つにまとめられます**。また、順序がないため、set[0]
のようなアクセスはできず、表示順も毎回変わることがあります。また、空の set
を作るときは、以下コードのように set()
を使います({}
は辞書になる)。
# 勇者ぴこりの持ち物袋
pikori_items = set()
# 中身を表示
print("勇者ぴこりの持ち物:", pikori_items)
勇者ぴこりの持ち物: set()
以下コードのように、リストやタプルに変換すれば順序付きで扱うことができます。
# 勇者ぴこりの持ち物袋(集合型)
pikori_items = {"回復薬", "鉄の剣", "回復薬", "魔法の書"}
# 中身を表示
print("勇者ぴこりの持ち物:", pikori_items)
# リストに変換して中身を表示
print("勇者ぴこりの持ち物リスト:", list(pikori_items))
勇者ぴこりの持ち物: {‘魔法の書’, ‘回復薬’, ‘鉄の剣’}
勇者ぴこりの持ち物リスト: [‘魔法の書’, ‘回復薬’, ‘鉄の剣’]
勇者ぴこりの持ち物リスト: [‘魔法の書’, ‘回復薬’, ‘鉄の剣’]
要素の追加・削除
以下コードのように、要素の追加は add
メソッド、削除は remove
メソッドを用います。
pikori_items = {"回復薬", "鉄の剣"}
# アイテム追加
pikori_items.add("魔法の書")
# アイテム削除
pikori_items.remove("鉄の剣")
# 中身を表示
print("勇者ぴこりの持ち物:", pikori_items)
勇者ぴこりの持ち物: {‘魔法の書’, ‘回復薬’}
集合演算
Pythonの set
型では、数学の集合と同じように「共通部分」「全体」「片方だけ」などを簡単に求めることができます。
演算 | 記号 | 意味 |
---|---|---|
積集合 | & |
両方に共通する要素 |
和集合 | | |
どちらかに含まれるすべての要素 |
差集合 | - |
片方にだけ含まれる要素 |
# 勇者ぴこりのアイテム
pikori_items = {"回復薬", "鉄の剣", "魔法の書"}
# 魔法使いルーナのアイテム
luna_items = {"回復薬", "氷の杖", "魔法の書"}
# 共通アイテム(積集合)
print("共通アイテム(積集合):", pikori_items & luna_items)
# どちらかが持っているアイテム(和集合)
print("どちらかが持っているアイテム(和集合):", pikori_items | luna_items)
# ぴこりだけが持っているアイテム(差集合)
print("ぴこりだけが持っているアイテム(差集合):", pikori_items - luna_items)
共通アイテム(積集合): {‘魔法の書’, ‘回復薬’}
どちらかが持っているアイテム(和集合): {‘鉄の剣’, ‘氷の杖’, ‘魔法の書’, ‘回復薬’}
ぴこりだけが持っているアイテム(差集合): {‘鉄の剣’}
どちらかが持っているアイテム(和集合): {‘鉄の剣’, ‘氷の杖’, ‘魔法の書’, ‘回復薬’}
ぴこりだけが持っているアイテム(差集合): {‘鉄の剣’}
関連ページ(もっと学びたい人へ)
Pythonの基礎から応用例まで、以下ページから学ぶことができます。

【Python超入門】基礎から応用例まで幅広く解説
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。