Pythonの集合型(set)とは? 重複を除外する特徴と基本的な作成方法

Pythonには、複数のデータをまとめて扱うコレクション型として、リスト(list)やタプル(tuple)の他に**集合型(set)**があります。

set は、数学の「集合」の概念に基づいたデータ型で、以下の2つの非常に重要な特徴を持っています。

  1. 重複する要素を持たない: 同じ要素を複数追加しようとしても、自動的に一つにまとめられます。
  2. 順序を持たない: (厳密には、Python 3.7以降では挿入順序が保持されるようになりましたが、set の本質的な機能は順序に依存しません。)

set は、リストから重複した要素を効率的に削除したり、要素の存在確認を高速に行ったり、あるいは和集合・積集合といった集合演算を行うために使用されます。

この記事では、set の基本的な作成方法について解説します。

目次

1. {} (波括弧) を使った作成

set を作成する基本的な方法は、{}(波括弧)で要素を囲み、カンマ(,)で区切ることです。

# 波括弧でセットを作成
# "web" が重複している点に注目
tags = {"python", "django", "web", "api", "web"}

print(tags)
print(f"型: {type(tags)}")

実行結果:

{'api', 'python', 'django', 'web'}
型: <class 'set'>

(実行環境によって表示される順序は異なる場合があります。)

重複していた "web" が自動的に1つにまとめられ、set が作成されました。

2. set() コンストラクタによる作成(リストからの変換)

set が非常に役立つ一般的な使用例が、リストから重複する要素を削除することです。set() コンストラクタ(関数)にリストなどのイテラブル(反復可能オブジェクト)を渡すと、重複が除去された set に変換されます。

# 重複を含むユーザーIDのリスト
user_id_list = ["u001", "u002", "u001", "u003", "u002", "u001"]
print(f"元のリスト: {user_id_list}")

# set() を使ってリストをセットに変換し、重複を除去
unique_user_ids = set(user_id_list)
print(f"重複除去後 (set): {unique_user_ids}")

実行結果:

元のリスト: ['u001', 'u002', 'u001', 'u003', 'u002', 'u001']
重複除去後 (set): {'u002', 'u003', 'u001'}

もし重複除去後に再びリストとして扱いたい場合は、list(set(user_id_list)) のように変換します。

3. 空のセットの作成方法(重要)

set を作成する上で、最も重要な注意点です。

{}(波括弧)のみを記述して空の set を作成しようとすると、Pythonはこれを**空の辞書(dict)**として解釈します。

# これは空の「辞書」になる
empty_wrong = {}
print(f"{empty_wrong} の型: {type(empty_wrong)}")

実行結果:

{} の型: <class 'dict'>

空の set を作成する場合は、必ず set() コンストラクタを引数なしで呼び出す必要があります。

# 空のセットを作成する正しい方法
empty_correct = set()
print(f"{empty_correct} の型: {type(empty_correct)}")

実行結果:

set() の型: <class 'set'>

まとめ

  • set は「重複を許さない」「順序を持たない」データ型です。
  • {"a", "b", "c"} のように {} で作成できます。
  • set(list) を使うと、リストから重複した要素を簡単に除去できます。
  • 空の set を作成する場合は、{} ではなく set() を使います。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次