python3の日記

Python3を図書とともに勉強していくブログ

set(集合)オブジェクト

setオブジェクトとは

setオブジェクトとは集合を表すデータ型。ディクショナリと同様に{}で表されることから、その区別に注意する。その特徴は主に以下の4つ。

 

1.リスト等と同様に複数の要素をもつことができる

s = {2,1,3}

2.集合なのでリストとは異なり要素は順番(インデックス)を持たない

s = {2,1,3}
print(s)
>>>{1,2,3}
print(s[1])
>>>TypeError: 'set' object does not support indexing

3.重複した要素は取り除かれる

s = {2,1,3,2}
print(s)
>>>{1,2,3}

4.数学演算の機能もサポートしてる

s = {2,1,3,2}
t = {1,0,3}
print(s & t)
>>>{0,1,2,3}

setオブジェクトの作成

set オブジェクトは下記のように、いろいろな方法で作成することができる。

1.set関数で空のsetを作成

s = set()

2.{}で囲むことでsetを作成(空集合ならディクショナリと判断される)

s = {2,1,3,2}

3.set関数の引数にリスト、タプルを入れる

s = set((1,2,3,4))
s = set([1,2,3,4])

4.set関数の引数にディクショナリを入れる(キーのみが渡される)

s = set({2:"a",1:"b",3:"c",2:"d"})
print(s)
>>>{1,2,3}

4.set関数の引数に文字列を渡す

s = set(”spam")
print(s)
>>>{"s","p","a","m"}

setオブジェクトの操作

 listと同様に、appendメソッドやremoveメソッドでその中身を操作することができる。また、数学演算にも対応している。

s1 = set([10, 20, 30, 40, 50])
s2 = set([10, 30, 50, 70, 90])
print(s1 | s2)
>>>{10,20,30,40,50,70,90}
print(s1 & s2)
>>>{10,30,50}

また、setオブジェクト固有のメソッド等も存在する。

s1 = set([10, 20, 30, 40, 50])
s2 = set([10, 30, 50])
print(s2.issubset(s1))
>>>True
print(s1.issuperset(s2))
>>>True