【第15回Python基礎講座】重複なし!順序なし!集合(セット)の世界

本ページはプロモーションが含まれています
【第15回Python基礎講座】重複なし!順序なし!集合(セット)の世界
国内のAI狂い

やっほー!国内のAI狂いだよ!✨

第15回へようこそ!今日は、リスト、タプルに続く第3のデータ構造、「集合(セット)」を紹介するよ。
数学で「集合」ってやったよね?ベン図とか書いて。
「うわっ、苦手だった…」って人も大丈夫!Pythonの集合は「重複を自動で消してくれる魔法の箱」として使えるから、実務でもめちゃくちゃ便利なんだよ!🧹✨

公式の「ここがわかりにくい」:順序がない?

公式ドキュメントの「集合」の説明を見てみよう。

集合 (set) は、重複する要素をもたない、順序づけられていない (unordered) 要素の集まりです。

「順序づけられていない」ってどういうこと?
これは要するに、「並び順が保証されない(インデックス番号がない)」ってことなんだ。
リストみたいに「0番目の要素ちょうだい!」って言っても、集合さんは「私の中に順番なんてないわよ!」って怒るんだね(TypeErrorになる)。
その代わり、「これ持ってる?」って聞くのは爆速だよ!

1. セットの作り方:重複は許さない!

要するにこれは「ユニーク(一意)なデータだけを残すフィルター」だよ!

セットを作るには、波括弧 {} を使うか、set() 関数を使うよ。
リストからセットを作ると、自動的に重複が消えるのが最大の特徴!

🐍 サンプルコードを見る(クリックで開閉)
# 波括弧で作る
fruits = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}

# 自動的に重複が消えてる!
print(fruits)
# 実行するたびに並び順が変わるかも?(順序なしだからね)

# リストからセットを作る(よく使うテクニック!)
numbers_list = [1, 2, 2, 3, 3, 3]
numbers_set = set(numbers_list)
print(numbers_set)
💻 実行結果:
{‘apple’, ‘banana’, ‘pear’, ‘orange’}
{1, 2, 3}

「このリスト、重複だらけで見にくいな〜」って思ったら、とりあえず set() に放り込めば一発解決だよ!✨

2. 【試験頻出】空っぽのセットを作る罠

ここ、試験で絶対に出るから赤ペン用意して!🖍️
「中身のあるセット」は {1, 2} みたいに書けるけど、「空のセット」はどう書くと思う?

【超重要】 空のセットを作るには?
{} → これは「空の辞書(dict)」になっちゃう!
set() → これが正解!
🐍 比較実験コード(クリックで開閉)
# これは辞書(Dictionary)になる
empty_dict = {}
print(f"{{}}の型: {type(empty_dict)}")

# これが集合(Set)
empty_set = set()
print(f"set()の型: {type(empty_set)}")
💻 実行結果:
{}の型: <class ‘dict’>
set()の型: <class ‘set’>

Pythonでは歴史的に {} は辞書(キーと値のペア)のために使われてきたから、空っぽの場合は辞書が優先されるんだね。

3. ベン図の世界!集合演算を使いこなそう

要するにこれは「共通点や相違点を一瞬で見つける機能」だよ!

セットの真骨頂は、数学のような「集合演算」ができること。
2つのグループ(セット)の関係性を調べるのにめちゃくちゃ便利だよ!

演算 記号 意味
和集合 a | b a と b のどちらかにあるもの全部(合体)
積集合 a & b a と b の両方にあるもの(共通)
差集合 a - b a にあって b にないもの(引き算)
対称差 a ^ b どちらか片方だけにあるもの(共通部分以外)
🐍 サンプルコードを見る(クリックで開閉)
a = set('abracadabra')
b = set('alacazam')

print(f"a: {a}") # {'a', 'r', 'b', 'c', 'd'}
print(f"b: {b}") # {'a', 'l', 'c', 'z', 'm'}

# a にあって b にない文字 (差集合)
print(f"a - b: {a - b}")

# a と b の両方にある文字 (積集合)
print(f"a & b: {a & b}")

# a と b の全部 (和集合)
print(f"a | b: {a | b}")
💻 実行結果:
a: {‘a’, ‘r’, ‘b’, ‘c’, ‘d’}
b: {‘a’, ‘l’, ‘c’, ‘z’, ‘m’}
a – b: {‘r’, ‘b’, ‘d’}
a & b: {‘a’, ‘c’}
a | b: {‘a’, ‘c’, ‘r’, ‘d’, ‘b’, ‘m’, ‘z’, ‘l’}

試験に出る!要注意ポイント

今回の範囲で、Python 3 エンジニア認定基礎試験によく出るポイントをまとめたよ!📝

① インデックスアクセス不可

セットは「順序がない」から、my_set[0] みたいに番号で取り出そうとすると TypeError になるよ。
中身を取り出したいときは、for 文で回すか、pop()(何が出るかはお楽しみ)を使うか、リストに変換してからアクセスしてね。

② セットに入れられるもの

セットの中身(要素)にできるのは、イミュータブル(変更不可)なものだけだよ。
だから、数字や文字列やタプルはOKだけど、リストは入れられない(リストは変更可能だから)。
「セットの中にリストを入れる」コードはエラーになるから注意!

💡 管理人の失敗エピソード
「重複を消したい!」と思って set(list_data) したのはいいけど、その後で list_data[0] みたいにアクセスしようとしてエラーになったことがあるよ😅
set にすると「リストとしての機能(順序やインデックス)」は失われちゃうから、必要なら list(set(list_data)) でリストに戻してあげてね!

理解度チェック!ミニクイズ

セットの性質、バッチリ理解できたかな?
試験レベルの問題でチェックしてみよう!🔍

空のセット(集合)を作成する正しいコードは?
  1. {}
  2. []
  3. set()
▼ クリックで正解を表示
正解: 3. set()

解説:
1の {} は空の辞書、2の [] は空のリストだよ。
空のセットだけは関数 set() を使う必要があるんだ。

次のコードを実行した結果、s の中身はどうなる?
s = {'A', 'B', 'A', 'C'}
  1. {'A', 'B', 'A', 'C'}
  2. {'A', 'B', 'C'}
  3. エラーになる
▼ クリックで正解を表示
正解: 2. {'A', 'B', 'C'}

解説:
セットは重複を許さないから、2つ目の ‘A’ は自動的に消滅するよ。
エラーにはならず、ただ無視されるんだ。

2つのセット ab の「共通する要素」だけを取り出す演算子は?
  1. a | b
  2. a - b
  3. a & b
▼ クリックで正解を表示
正解: 3. a & b

解説:
& は積集合(intersection)を表すよ。
| は和集合(全部)、- は差集合だよ。

まとめ:次回への引き

今回は「集合(セット)」について解説したよ!
「重複を消す」「共通点を探す」というタスクにはセットが最強!リストとうまく使い分けてね✨

次回は、Pythonのデータ構造のラスボス!
テーマは「キーと値のペア!辞書(ディクショナリ)の操作」だよ。
データを検索する速度は最強クラス。リストだと遅くなっちゃう処理も、辞書なら一瞬!?
実務で最もよく使うと言っても過言ではない超重要機能だから、気合を入れていこう!お楽しみに!👋✨

出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.

よかったらシェアしてね!
  • URLをコピーしました!
目次