Help us understand the problem. What is going on with this article?

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たのし~

Tocyuki
SREはじめました。 柔術やってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away