【Python入門】set型(集合型)の使い方

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の使い方について、基礎文法から応用例まで入門者向けに解説します。
この記事を書いた人
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする