やっほー!国内の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)) でリストに戻してあげてね!
理解度チェック!ミニクイズ
セットの性質、バッチリ理解できたかな?
試験レベルの問題でチェックしてみよう!🔍
空のセット(集合)を作成する正しいコードは?
▼ クリックで正解を表示
set()
解説:
1の {} は空の辞書、2の [] は空のリストだよ。
空のセットだけは関数 set() を使う必要があるんだ。
次のコードを実行した結果、s の中身はどうなる?
s = {'A', 'B', 'A', 'C'}
▼ クリックで正解を表示
s の中身はどうなる?{'A', 'B', 'C'}
解説:
セットは重複を許さないから、2つ目の ‘A’ は自動的に消滅するよ。
エラーにはならず、ただ無視されるんだ。
2つのセット a と b の「共通する要素」だけを取り出す演算子は?
▼ クリックで正解を表示
a と b の「共通する要素」だけを取り出す演算子は?a & b
解説:
& は積集合(intersection)を表すよ。
| は和集合(全部)、- は差集合だよ。
まとめ:次回への引き
今回は「集合(セット)」について解説したよ!
「重複を消す」「共通点を探す」というタスクにはセットが最強!リストとうまく使い分けてね✨
次回は、Pythonのデータ構造のラスボス!
テーマは「キーと値のペア!辞書(ディクショナリ)の操作」だよ。
データを検索する速度は最強クラス。リストだと遅くなっちゃう処理も、辞書なら一瞬!?
実務で最もよく使うと言っても過言ではない超重要機能だから、気合を入れていこう!お楽しみに!👋✨
出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.






