忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python】重複を許さない!set(集合)の基本と活用シーン

Pythonの「set(集合)」は、リストと似ていますが、大きな違いが2つあります。それは「重複した値を持てない」ことと「順序がない」ことです。データのユニーク性を保証したい場面で非常に強力なツールとなります。

1. 考え方:set(集合)の世界

数学の「集合」と同じ概念です。同じ値が何度現れても、集合の中では「1つ」としてカウントされます。また、順番という概念がないため、リストよりも高速に値を検索できるのが特徴です。

a = ['1', '1', '2', '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

4. ステップアップ:いつ使うの?(数学・データ分析)

「あまり使ったことがない」と感じるかもしれませんが、実は数学的な処理やデータクレンジングで大活躍します。

  • 積集合(AND):2つのグループ両方に所属している人を探す。
  • 和集合(OR):2つのグループのメンバーを重複なく合算する。
  • 差集合(DIFF):Aグループにはいるが、Bグループにはいない人を抽出する。

5. リストと集合の使い分け

どちらを使うべきか迷ったときは、以下の基準で判断しましょう。

データ構造主な用途メリット
リスト (list) 並び順が重要なデータ インデックス(添字)でアクセスできる。
集合 (set) 重複確認、グループ比較 検索が圧倒的に速い。重複を自動で消せる。

6. まとめ

Pythonのsetは、単なる「重複削除ツール」以上の価値があります。特に「ベン図」で描けるようなグループ同士の比較(数学的な集合演算)を行う際には、リストでループを回すよりも圧倒的にシンプルで高速なコードが書けます。データ分析の第一歩として、ぜひ使いこなしましょう!


PR