Python set(集合)の計算について
はじめに
集合 set の使用例を記載する
集合の計算式
計算 | 演算子 | メソッド |
---|---|---|
和集合 | | | union |
積集合 | & | intersection |
差集合 | - | difference |
排他的論理和集合 | ^ | symmetric_difference |
例
1〜30までの整数のうち、2の倍数・3の倍数・5の倍数について考える
BEN図
Python3 での計算
宣言
>>> duo = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30} # 2の倍数 >>> tri = {3, 6, 9, 12, 15, 18, 21, 24, 27, 30} # 3の倍数 >>> penta = {5, 10, 15, 20, 25, 30} # 5の倍数
和集合
>>> duo | tri # duo.union(tri) も同様 {2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 26, 27, 28, 30} >>> tri | penta # tri.union(penta) も同様 {3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24, 25, 27, 30} >>> duo | penta # duo.union(penta) も同様 {2, 4, 5, 6, 8, 10, 12, 14, 15, 16, 18, 20, 22, 24, 25, 26, 28, 30} >>> duo | tri | penta # duo.union(tri).union(penta) も同様 {2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30}
積集合
>>> duo & tri # duo.intersection(tri) も同様 {6, 12, 18, 24, 30} >>> tri & penta # tri.intersection(penta) も同様 {30, 15} >>> duo & penta # duo.intersection(penta) も同様 {10, 20, 30} >>> duo & tri & penta # duo.intersection(tri).intersection(penta) も同様 {30}
差集合
>>> duo - tri # duo.difference(tri) も同様 {2, 4, 8, 10, 14, 16, 20, 22, 26, 28} >>> duo - tri - penta # duo.difference(tri).difference(penta) も同様 {2, 4, 8, 14, 16, 22, 26, 28} >>> tri - duo # tri.difference(duo) も同様 {3, 9, 15, 21, 27} >>> tri- duo - penta # tri.difference(duo).difference(penta) も同様 {27, 9, 3, 21} >>> penta - duo # penta.difference(duo) も同様 {25, 5, 15} >>> penta - duo - tri # penta.difference(duo).difference(tri) も同様 {25, 5}
排他的論理和集合
>>> duo ^ tri # duo.symmetric_difference(tri) も同様 {2, 3, 4, 8, 9, 10, 14, 15, 16, 20, 21, 22, 26, 27, 28} >>> tri ^ penta # tri.symmetric_difference(penta) も同様 {3, 5, 6, 9, 10, 12, 18, 20, 21, 24, 25, 27} >>> duo ^ penta # duo.symmetric_difference(penta) も同様 {2, 4, 5, 6, 8, 12, 14, 15, 16, 18, 22, 24, 25, 26, 28} >>> duo ^ tri ^ penta # duo.symmetric_difference(tri).symmetric_difference(penta) も同様 {2, 3, 4, 5, 8, 9, 14, 16, 21, 22, 25, 26, 27, 28, 30}
感想
こんなに簡単に集合を扱えるなんてPython はすごいなと改めて感じました。