2020年3月30日月曜日

【集合】集合(set型)の集合演算

 要素の重複が無く、要素の順序が無い集合(set型)と、集合演算について解説する。



1. 集合(set型)の操作

 set型は{}の中に要素をカンマで区切って記述する(同様に要素の集まりであるリストは[]で、タプルは()で囲われる)。

a = {1, 2, 3, 4}
b = {'りんご', 'みかん', 'バナナ', 'いちご'}


 set型は要素の重複を許可しないため、要素が重複した場合には片方の要素が残されもう片方の要素は消去される。

b = {'りんご', 'みかん', 'バナナ', 'いちご', 'バナナ'}
print(b)

実行結果

{'いちご', 'みかん', 'りんご', 'バナナ'}


 要素数はlen関数で求められる。

a = {1, 2, 3, 4}
print(len(a))

実行結果

4


 集合の中に要素があるかどうかは演算子inまたはnot inで確認できる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
print('りんご' in b)

実行結果

True


b = {'りんご', 'みかん', 'バナナ', 'いちご'}
print('りんご' not in b)

実行結果

False


2. 和集合

 2つ以上の集合の和を求めるには。重複している要素については1度だけ集計してダブりは除かれる。
次の例では'みかん'、'いちご'は集合b,c両方に含まれるためそれぞれ1度だけ合算される。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
print(b | c)

実行結果

{'いちご', 'みかん', 'もも', 'りんご', 'バナナ', 'ブドウ'}


この例で集合bに和を代入する場合は演算子=|を用いる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
b |= c
print(b)

実行結果

{'いちご', 'みかん', 'もも', 'りんご', 'バナナ', 'ブドウ'}


3. 積集合

 積集合は2つ以上の集合の共通要素。&演算子を用いる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
print(b & c)

実行結果

{'いちご', 'みかん'}


この例で集合bに和を代入する場合は演算子&=を用いる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
b &= c
print(b)

実行結果

{'いちご', 'みかん'}


4. 差集合

 片方の集合からもう片方の集合を引いたものが差集合。元の集合から重複分が除かれる。
次の例では集合bから集合cと重複する'いちご', 'みかん'が除かれる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
print(b - c)

実行結果

{'りんご', 'バナナ'}


この例で集合bに差集合を代入する場合は演算子-=を用いる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
b -= c
print(b)

実行結果

{'りんご', 'バナナ'}


5. 対称差集合

 対称差集合は2つ以上の集合の和から重複要素を除いたもの。演算子^を用いて求める。
次の例では集合bと集合cの和から重複要素である'いちご', 'みかん'が除かれる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
print(b ^ c)

実行結果

{'もも', 'りんご', 'バナナ', 'ブドウ'}


この例で集合bに対称差集合を代入する場合は演算子^=を用いる。

b = {'りんご', 'みかん', 'バナナ', 'いちご'}
c =  {'もも', 'みかん', 'ブドウ', 'いちご'}
b ^= c
print(b)

実行結果

{'もも', 'りんご', 'バナナ', 'ブドウ'}


6. リファレンス

Python 標準ライブラリ > set(集合)型 --- set, frozenset

使用バージョン:Python 3.7.0

0 件のコメント:

コメントを投稿