集合について中学か高校で習ったことの復習です。
和集合 論理和 a OR b a または b a.union(b) a | b

論理積 積集合 a AND b a かつ b a.intersection(b) a & b

差集合 a セットから b セットの要素を取り除く a - b a.differrence(b)

対称差集合 排他的論理和 EXOR 入力値が同じなら出力値 0 偽 入力値が異なれば出力値 1 真
a ^ b a.symmetric_difference(b)

P195
●色のセットを2つ作る
###色のセットを2つ作るcolor_setA = {"blue", "yellow", "red"}color_setB = {"green", "blue", "black"}
P196
●セットの要素の個数
xxxxxxxxxx### セットの要素の個数color_set = {"blue", "pink", "orange", "white", "black"}a = len(color_set)print(a)
●range()を使ってセットを作る
xxxxxxxxxx### range()を使ってセットを作るnum2set = set(range(0,20,2)) # 20までの2の倍数のセットnum3set = set(range(0,20,3)) # 20までの3の倍数のセットprint(num2set)print(num3set)
P197
●空集合(空のセット)を作る
xxxxxxxxxx### 空集合(空のセット)を作るempty_set = set()print(empty_set)
●リストからセットを作る(重複した要素が取り除かれる)
xxxxxxxxxx### リストからセットを作る(重複した要素が取り除かれる)data = [101, 103, 103, 115, 167, 167, 189]dataset = set(data)print(dataset)
●セットをリストに変換する
xxxxxxxxxx### セットをリストに変換するdataset = {101, 167, 103, 115, 189}datalist = list(dataset) # リストに変換するprint(datalist)
xxxxxxxxxxdatalist.sort() # ソートするprint(datalist)
●文字列からセットを作る(重複した文字が取り除かれる)
xxxxxxxxxx### 文字列からセットを作る(重複した文字が取り除かれる)happyset = set("happy")print(happyset)
P198
●空のセットに要素を追加していく
xxxxxxxxxx### 文字列からセットを作る(重複した文字が取り除かれる)fruits = set()fruits.add("apple")fruits.add("orange")print(fruits)
●既存の要素を追加しても無視される
xxxxxxxxxx### 既存の要素を追加しても無視されるprint(fruits)fruits.add("orange") # 既に入っている"orange"を追加してみるprint(fruits)
●fruitsセットから"banana"を削除する
xxxxxxxxxx### fruitsセットから"banana"を削除するfruits = {'banana', 'orange', 'apple'}print(fruits)fruits.remove("banana")print(fruits)
P199
●discard()でセットの要素を削除する discard()でも指定した要素を削除できます。remove()とは違いdiscard() は削除しようとした要素がセットに含まれていない場合でもエラーに ならず操作が無視されます。
x### discard()でセットの要素を削除するcolor_set = {"blue", "yellow", "red"}color_set.discard("green")print(color_set)color_set.discard("red")print(color_set)
●既存のセットを空にする
xxxxxxxxxx### 既存のセットを空にするdataset = {0.1, 0.2, 0.5, 1.3, 1.6}dataset.clear()print(dataset)
●セットから要素を1個ずつ取り除く
xxxxxxxxxx### セットから要素を1個ずつ取り除くcolor_set = {"red", "green", "blue"}item = color_set.pop() # 要素を1個取り除きますitem # 取り出した要素が入っていますprint(item)print(color_set) # "green"が取り除かれています
P200
セットにはfrozenset()で作るセットもあります。frozenset()で作るセットも set()と同じように作ります。 {} または set() で作ったセットはset型、frozenset()で作ったセットは frozenset型です。
●frozenset()のセットを作る
xxxxxxxxxx### frozenset()のセットを作るdataset = frozenset(["a", "b", "c"])print(dataset)print(type(dataset))
●frozenset型のセットにadd()で要素を追加するとエラーになる
xxxxxxxxxx### frozenset型のセットにadd()で要素を追加するとエラーになるdataset = frozenset(["a", "b", "c"])dataset.add("x")print(dataset)
●frozenset型のセットの値は削除できない
xxxxxxxxxx### frozenset型のセットの値は削除できないdataset.clear()
P201
●リストの要素を2倍にしてセットを作る
xxxxxxxxxx### リストの要素を2倍にしてセットを作るnumbers = [1, 2, 3, 4, 5, 6]num_set = {num*2 for num in numbers} # セット内包表記print(num_set)
●リストの正の要素だけでセットを作る
xxxxxxxxxx### リストの正の要素だけでセットを作るnumbers = [-1.3, 1.2, -1.2, 1.1, 1.5, -1.1, 1.2, 1.1, 1.4]num_set = {num for num in numbers if num>0 }print(num_set)
============================================================
P203
●和集合:すべてのセットの要素を合わせたセットを作る
xxxxxxxxxx### 和集合:すべてのセットの要素を合わせたセットを作るa = {"リンゴ", "みかん", "桃", "いちご"}b = {"いちご", "スイカ", "みかん", "バナナ"}c = a | b # 和集合を求めるprint(c)
●セットa、b、cの和集合を求める
xxxxxxxxxx### セットa、b、cの和集合を求めるa = {"リンゴ", "みかん", "桃", "いちご"}b = {"いちご", "スイカ"}c = {"みかん", "バナナ"}d = a | b | c # 和集合を求めるprint(d)
●union()を使って和集合を求める
xxxxxxxxxx### union()を使って和集合を求めるset1 = {1, 2, 3}list1 = [2, 4, 6, 8]list2 = [3, 6, 9]data = set1.union(list1, list2) # 和集合を求めるprint(data)
P204
●積集合:a、bセットの共通した要素のセットcを作る
xxxxxxxxxx### 積集合:a、bセットの共通した要素のセットcを作るa = {"リンゴ", "みかん", "桃", "いちご"}b = {"いちご", "スイカ", "みかん", "バナナ"}c = a & b # 積集合を求めるprint(c)
P205 ●セットa、b、cの積集合を&演算子を使って求める
xxxxxxxxxx### セットa、b、cの積集合を&演算子を使って求めるa = {"リンゴ", "みかん", "桃", "いちご"}b = {"いちご", "スイカ", "みかん", "バナナ"}c = {"いちご", "リンゴ"}d = a & b & c # 積集合を求めるprint(d)
●セットa、b、cの積集合をintersection()を使って求める
xxxxxxxxxx### セットa、b、cの積集合をintersection()を使って求めるd = a.intersection(b, c) # 積集合を求めるprint(d)
●差集合:aからbに含まれている要素を取り除いたセットを作る
xxxxxxxxxx### 差集合:aからbに含まれている要素を取り除いたセットを作るa = {"リンゴ", "みかん", "桃", "いちご"}b = {"いちご", "スイカ", "みかん", "バナナ"}c = a - b # 差集合を求めるprint(c)
●difference()を使って差集合を求める
xxxxxxxxxx### difference()を使って差集合を求めるc = a.difference(b) # 差集合を求めるprint(c)
P206
●対称差:a、bセットの片方だけに含まれている要素のセットを作る
xxxxxxxxxx### 対称差:a、bセットの片方だけに含まれている要素のセットを作るa = {"リンゴ", "みかん", "桃", "いちご"}b = {"いちご", "スイカ", "みかん", "バナナ"}c = a ^ b # 対称差集合を求めるprint(c)
●symmetric_difference()を使って対称差集合を求める
xxxxxxxxxx### symmetric_difference()を使って対称差集合を求めるc = a.symmetric_difference(b) # 対称差集合を求めるprint(c)
P207
●セットの値を和集合で更新する
xxxxxxxxxx### セットの値を和集合で更新するdata = {"red", "blue"}data2 = {"blue", "yellow"}data3 = {"blue", "green"}data.update(data2, data3) # 和集合で更新するprint(data)
●|= 演算子を使って和集合の代入を書いた場合
xxxxxxxxxx### |= 演算子を使って和集合の代入を書いた場合data = {"red", "blue"}data2 = {"blue", "yellow"}data3 = {"blue", "green"}data |= data2 # 和集合で置き換えるdata |= data3 # 和集合で置き換えるprint(data)
●セットの値を積集合で置き換える
xxxxxxxxxx### セットの値を積集合で置き換えるdata = {"red", "blue", "green", "yellow"}data2 = {"blue", "black", "yellow"}data.intersection_update(data2) # 積集合で更新するprint(data)
P208
●&= 演算子を使って積集合の代入を書いた場合
xxxxxxxxxx### &= 演算子を使って積集合の代入を書いた場合data = {"red", "blue", "green", "yellow"}data2 = {"blue", "black", "yellow"}data &= data2 # 積集合で置き換えるprint(data)
●セットの値を差集合で置き換える
xxxxxxxxxx### セットの値を差集合で置き換えるdata = {"red", "blue", "green", "yellow"}data2 = {"blue", "black", "yellow"}data.difference_update(data2) # 差集合で更新するprint(data)
●-= 演算子を使って差集合の代入を書いた場合
xxxxxxxxxx### -= 演算子を使って差集合の代入を書いた場合data = {"red", "blue", "green", "yellow"}data2 = {"blue", "black", "yellow"}data -= data2 # 差集合で置き換えるprint(data)
●セットの値を対称差集合(排他的論理和)で置き換える
xxxxxxxxxx### セットの値を対称差集合で置き換えるdata = {"red", "blue", "green", "yellow"}data2 = {"blue", "black", "yellow"}data.symmetric_difference_update(data2) # 対称差集合で更新するprint(data)
P209
●^= 演算子を使って対称差集合の代入を書いた場合
xxxxxxxxxx### ^= 演算子を使って対称差集合の代入を書いた場合data = {"red", "blue", "green", "yellow"}data2 = {"blue", "black", "yellow"}data ^= data2 # 対称差集合で置き換えるprint(data)
●2つのセットの要素が一致するするかどうかは、== 演算子で比較する ことができます。要素が一致すればTrue,一つでも異なっていれば Falseが返されます。セットには要素の順はないので要素の並びは 関係ありません。
xxxxxxxxxx### 2つのセットの要素が一致するときTruea = {1, 2, 3}b = {3, 2, 1}c = {1, 2, 3, 4}print(a == b) # aとbが一致するときTrueprint(a == c)
P210
●2つのセットの要素が一致しないときTrue
xxxxxxxxxx### 2つのセットの要素が一致しないときTruea = {1, 2, 3}b = {3, 2, 1}c = {1, 2, 3, 4}print("a != b", a != b) # aとbが一致しないときTrueprint("a != c ",a != c)
●共通している要素があるかないかを確かめる
xxxxxxxxxx### 共通している要素があるかないかを確かめるa = {"earth", "wind", "fire"}b = {"sky", "sea"}c = {"fire", "water"}a.isdisjoint(b) # aとbには共通要素がないprint("a.isdisjoint(b)",a.isdisjoint(b))print("a.isdisjoint(c)",a.isdisjoint(c))
p211
●aセットがbセットのサブセットかどうかを判定する

aセットがbセットのサブセットかどうかはa.issubset(b)か a < b および a < =b の演算子で判定できます。
xxxxxxxxxx### aセットがbセットのサブセットかどうかを判定するa = {"blue", "red"}b = {"blue", "green", "red", "pink", "white"}a.issubset(b) # aはbのサブセットであるprint(a.issubset(b) )print(a<b)print(a <= b)
P212
●aセットがbセットのスーパーセットかどうかを判定する。 aセットがbセットのスーパーセットかどうかはa.issuperset(b)か a >= b 演算子で判定できます
xxxxxxxxxx### aセットがbセットのスーパーセットかどうかを判定するa = {1999, 2011, 2013, 2014, 2016, 2017}b = {2011, 2013, 2014}a.issuperset(b) # aはbのスーパーセットであるprint(a.issuperset(b))print(a >= b)