search
LoginSignup
67

More than 1 year has passed since last update.

posted at

updated at

Organization

Pythonの集合演算

はじめに

集合に関してすぐ忘れちゃうのですよ

集合とは

  • 集合とは、重複する要素をもたない、順序づけられていない要素の集まり
  • {}内にカンマ区切りで要素を配置するか、set関数にシーケンス型を渡すことで生成
演算種 説明
和(union) A か B に含まれる
積(intersection) A と B で共通
差(difference) A にのみ含まれる
対称差(symmetric difference) A もしくは B にのみ含まれる

Setオブジェクトを用いて以下のような数学的な演算を行える

和(union)

A か B に含まれる

>>> {1, 2, 3} | {2, 3, 4}  # 和
{1, 2, 3, 4}

または

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.union(b)
{1, 2, 3, 4}

元の集合を変更する場合

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.update(b)
{1, 2, 3, 4}
>>> a
{1, 2, 3, 4}

積(intersection)

A と B で共通

>>> {1, 2, 3} & {2, 3, 4}  # 積
{2, 3}

または

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.intersection(b)
{2, 3}

元の集合を変更する場合

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.intersection_update(b)
>>> a
{2, 3}

差(difference)

A にのみ含まれる

>>> {1, 2, 3} - {2, 3, 4}  # 差
{1}

または

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}   
>>> a.difference(b)
{1}

元の集合を変更する場合

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.difference_update(b)
>>> a
{1}

対称差(symmetric difference)

A もしくは B にのみ含まれる

>>> {1, 2, 3} ^ {2, 3, 4}  # 対象差
{1, 4}

または

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.symmetric_difference(b)
{1, 4}

元の集合を変更する場合

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a.symmetric_difference_update(b)
>>> a
{1, 4}

部分集合(subset)かの判定

左辺の要素すべてが右辺の集合に含まれている場合

>>> {1, 3} <= {1, 2, 3}
True

左辺の要素すべてが右辺の集合に含まれていない場合

>>> {1, 4} <= {1, 2, 3}
False

おわりに

Pythonたのし~

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
What you can do with signing up
67