0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python set型の取扱い 備忘録

Last updated at Posted at 2022-05-14

概要

set型はlist型よりも演算が早いので使う場面が多いが、集合には少し注意が必要と感じたので備忘録として残す。
setの基本的な使い方は下記リンクを参照のこと。

  • 実施期間: 2022年5月
  • 環境:Colab (Python3)

集合

使用する集合は下記とする。

set0 = {i for i in range(11)}
set1 = {1, 2, 3, 6, 7}
set2 = {3, 4, 5, 7, 8}
set3 = {6, 7, 8, 9, 10}

ベン図で書くとこんな感じ。
Screenshot from 2022-05-14 11-49-18.png

和集合

|演算子かunion()で求める。
set1,2と、set1,2,3の和集合は下記となる。

print(set1 | set2)    # または
print(set1.union(set2))
>>> {1, 2, 3, 4, 5, 6, 7, 8}

print(set1 | set2 | set3)    # または
print(set1.union(set2,set3))
>>> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

set1,2の和集合をベン図で太字で書くとこんな感じ
Screenshot from 2022-05-14 14-11-28.png

積集合

&演算子かintersection()で求める。
set1,2と、set1,2,3の積集合は下記となる。

print(set1 & set2)    # または
print(set1.intersection(set2))
>>> {3, 7}

print(set1 & set2 & set3)    # または
print(set1.intersection(set2,set3))
>>> {7}

set1,2の積集合をベン図で太字で書くとこんな感じ
Screenshot from 2022-05-14 14-10-04.png

差集合

-演算子かdifference()で求める。差なので順番により答えは異なる。
set1,2と、set2,1の差集合は下記となる。

print(set1 - set2)    # または
print(set1.difference(set2))
>>> {1, 2, 6}

print(set2 - set1)    # または
print(set2.difference(set1))
>>> {8, 4, 5}

set1,2と、set2,1の差集合をベン図で太字で書くとこんな感じ
Screenshot from 2022-05-14 14-21-36.png

対称差集合

^演算子かsymmetric_difference()で求める。
まず、^演算子を使ったset1,2の対称差集合は下記となる。

print(set1 ^ set2)
>>> {1, 2, 4, 5, 6, 8}

Screenshot from 2022-05-14 14-33-19.png

重なっていた{3, 7}が除かれた結果となる。
では、set1^set2^set3はどうなるのか?3集合間で重なった{3, 6, 7, 8}が除かれるわけではない。

print(set1 ^ set2 ^ set3)
>>> {1, 2, 4, 5, 7, 9, 10}

Screenshot from 2022-05-14 15-00-06.png
先に求めたset1^set2の対称差集合{1, 2, 4, 5, 6, 8}に対し、再度set3で対称差集合を求めたものになった。
こんな計算に意味があるのか疑問なので、対称差集合には2変数だけを使用すべきだと思う。
Pythonにそういった思いがあるのか下記はエラーとなる。symmetric_difference()だけには2変数以上は渡せない。

print(set1.symmetric_difference(set2, set3))
>>> TypeError: symmetric_difference() takes exactly one argument (2 given)

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?