【Python】重複を許さない!set(集合)の基本と活用シーン
Pythonの「set(集合)」は、リストと似ていますが、大きな違いが2つあります。それは「重複した値を持てない」ことと「順序がない」ことです。データのユニーク性を保証したい場面で非常に強力なツールとなります。
1. 考え方:set(集合)の世界
数学の「集合」と同じ概念です。同じ値が何度現れても、集合の中では「1つ」としてカウントされます。また、順番という概念がないため、リストよりも高速に値を検索できるのが特徴です。
a = ['1', '1', '2', '2']
[ setに変換した後の動き ]
・重複の排除:'1' と '2' の2つだけが残ります。
・順不同:取り出す際に 1, 2 の順とは限りません。
・一括判定:ある値が含まれているかどうかの確認が爆速です。
[ setに変換した後の動き ]
・重複の排除:'1' と '2' の2つだけが残ります。
・順不同:取り出す際に 1, 2 の順とは限りません。
・一括判定:ある値が含まれているかどうかの確認が爆速です。
2. Pythonサンプルプログラム
重複を含んだリストを set() 関数に渡すことで、簡単にユニークな(重複のない)要素のみを抽出できます。
# -*- coding: utf-8 -*- def main(): # 重複のあるリスト a = ['1', '1', '2', '2'] # リストを集合(set)に変換 b = set(a) print("集合の中身を順に取り出します。") # for文で出力(順序は保証されません) for x in b: print(x) if __name__ == "__main__": main()
3. 実行結果
集合の中身を順に取り出します。
1
2
1
2
4. ステップアップ:いつ使うの?(数学・データ分析)
「あまり使ったことがない」と感じるかもしれませんが、実は数学的な処理やデータクレンジングで大活躍します。
- 積集合(AND):2つのグループ両方に所属している人を探す。
- 和集合(OR):2つのグループのメンバーを重複なく合算する。
- 差集合(DIFF):Aグループにはいるが、Bグループにはいない人を抽出する。
5. リストと集合の使い分け
どちらを使うべきか迷ったときは、以下の基準で判断しましょう。
| データ構造 | 主な用途 | メリット |
|---|---|---|
| リスト (list) | 並び順が重要なデータ | インデックス(添字)でアクセスできる。 |
| 集合 (set) | 重複確認、グループ比較 | 検索が圧倒的に速い。重複を自動で消せる。 |
6. まとめ
Pythonのsetは、単なる「重複削除ツール」以上の価値があります。特に「ベン図」で描けるようなグループ同士の比較(数学的な集合演算)を行う際には、リストでループを回すよりも圧倒的にシンプルで高速なコードが書けます。データ分析の第一歩として、ぜひ使いこなしましょう!
PR