【Python初学者向け】「集合」Set()の基本

python icatchPython

リスト、タプル、辞書、はよく見るけど、set()って何?

もしくは、set()ってなんだっけ?

Pythonに携わってすぐの方はもちろんのこと、既にコードが書ける!という方にも復習の意味を兼ねて、今回は「集合」set()についての概要、使い方、を記載しております

こちらを読めば、さらにプログラミングの幅が広がるかと思います!!

「集合」set()とは

question

集合オブジェクトは集合との名の通り、単なる要素の集まりを表します

そのため、リストなどにある要素の順序はありません

その点、辞書に近いかもしれません

見た目的にも、辞書のキーだけ集まったようなものになります

>>> test_set = {‘a’,’b’,’c’,’d’}

集合のオブジェクトを作るには、

  • set()
  • {}

のどちらかを使います

ただし、

>>> kara_set = {}

となってしまうと、空の辞書となってしまいますので、

空の集合の場合は

>>> kara_set = set()

で作ります

セットは辞書と同じ波カッコを使い同じ値を持つ要素は存在しません

set()への変換

文字列 → set()

>>> set(‘japanese’)

{‘n’, ‘e’, ‘j’, ‘a’, ‘s’, ‘p’} #重複している要素は一つになります

リスト → set() ※タプルも同様です([]を()に変えるだけ)

>>> set([‘japan’,’korea’,’china’])

{‘china’, ‘japan’, ‘korea’}

辞書 → set()

>>> set({‘japan’:’japanese’, ‘us’:’english’, ‘china’: ‘chinese’})

{‘china’, ‘us’, ‘japan’} #辞書を渡すとキーだけの集合となります

演算子

はじめに

演算子の説明につかう、集合を作成します

こちらでは例として、

サッカー部、野球部に所属しているメンバーを変数に格納しています

>>> soccer_club = {‘hamada’, ‘matsumoto’, ‘tanaka’} #サッカー部

>>> baseball_club = {‘hamada’, ‘endo’, ‘hosei’} #野球部

>>> kitaku_bu = {‘watabe’} #帰宅部

積集合: & もしくは intersection()関数

サッカー部、野球部のどちらの部活にも所属している人の集合になります!

>>> soccer_club & baseball_club

{‘hamada’}

>>> soccer_club.intersection(baseball_club)

{‘hamada’}

和集合: | もしくは union()関数

どちらか一方にでも所属している人の集合になります!

>>> soccer_club | baseball_club

{‘matsumoto’, ‘tanaka’, ‘hosei’, ‘endo’, ‘hamada’}

>>> soccer_club.union(baseball_club)

{‘matsumoto’, ‘tanaka’, ‘hosei’, ‘endo’, ‘hamada’}

差集合: – もしくは difference()関数

サッカー部には所属しているが、野球部には所属していない

>>> soccer_club – baseball_club

{‘matsumoto’, ‘tanaka’}

>>> soccer_club.difference(baseball_club)

{‘matsumoto’, ‘tanaka’}

野球部には所属しているが、サッカー部には所属していない

>>> baseball_club – soccer_club

{‘hosei’, ‘endo’}

>>> baseball_club.difference(soccer_club)

{‘hosei’, ‘endo’}

その他の演算子

排他的OR: ^ もしくは symmetric_difference()関数

サッカー部、野球部のどちらか一方にだけ所属している人の集合です

部分集合: <= もしくは issubset()関数)

※逆パターンは >= もしくは issuperset()関数

>>> futsal_club = {‘hamada’, ‘matsumoto’} #futsal_clubができた

フットサルクラブのメンバーは全員、サッカー部にいるメンバーである

>>> futsal_club <= soccer_club

True

サッカー部のメンバーは当然全員サッカー部のメンバーである

>>> soccer_club <= soccer_club

True

真部分集合: < 逆パターンは >

上記と違い、この場合はFalaseとなる

>>> soccer_club < soccer_club

False

この場合は、Trueで上に同じ

>>> futsal_club < soccer_club

True

まとめ

notes

「集合」set()につきましては、以上となります

要素がたくさんある集合などで、重複や全体を調べるのが非常に簡単になりそうですね!

僕自身、リスト、タプル、辞書はよく使っているのですが、set()はほとんど使っていませんでした

改めて調べなおしたら、とても面白い!!となったので共有させて頂きました

次回以降もお楽しみに!

タイトルとURLをコピーしました