[Python]setで集合演算(和集合/差集合/積集合)

Pythonでは集合を扱うset型があり、これらを演算することで集合の演算ができます。
基本的な例を紹介します。

setの宣言

setは波括弧({})で囲むことで宣言できます。
重複した値があっても一意な値のみに絞られます。

sample = {1,2,3,2,1}
sample
{1, 2, 3}

listからの変換

listをset()関数でsetに変換することもできます。

set型をlist()関数でlistに戻すこともできますが、
setには順番の概念が無いため、最初のlistの順序は担保されません。

# listの宣言
l = [1,3,2,4,5]

# set変換
l_set = set(l)
l_set
{1, 2, 3, 4, 5}

# setをlist変換
ll = list(l_set)
ll
[1, 2, 3, 4, 5] # 順番は担保されない

集合の演算

集合同士の演算を行ってみます。

サンプルのセット宣言をしておきます。

set_a = {1,2,3,4,5}
set_b = {2,4,6}

和集合

「AとBにあるものすべて」です。

set_add = set_a | set_b
set_add
{1, 2, 3, 4, 5, 6}

差集合

「AにはあるけどBにはないもの」と
「BにはあるけどAにはないもの」です。

set_sub = set_a - set_b
set_sub
{1, 3, 5}

set_sub_2 = set_b - set_a
set_sub_2
{6}

積集合

「AとB両方にあるもの」です。

set_inter = set_a & set_b
set_inter
{2, 4}

終わりに

今回は基本的なもののみですが、他の使い方についても機会があれば書いていきます。

参考