Python 入門 ノート (19)集合型

集合型

{}波かっこ(curly brakets)を使います。

ユニーク値

集合型は値の重複は許されません。

例えば重複のある集合を print すると、重複値は削除されます。

>>> a = {1, 2, 2, 3 ,4 ,4 ,5 ,6}

{}で括っていますね。

これを実行してみます。

>>> a
{1, 2, 3, 4, 5, 6}

重複した値は無くなり、すべてユニークな値になっています。

では、a の型(type)を調べてみます。

>>> type(a)
<class 'set'>

set型(集合型)と返ってきます。

 

集合 a と集合 b の引き算?

ここで、以下のように集合 a, b があり、

a から b を引いてみます。 どうなるでしょうか?

a = {1, 2, 3, 4, 5, 6}
b = {2, 3, 6, 7}

print( a - b)

答えは

{1, 4, 5}

つまり、a と b を比較結果 重複している要素が a から削除されています。

では、b 引く a はどうでしょう?

b = {2, 3, 6, 7}
a = {1, 2, 3, 4, 5, 6}

print(b - a)

結果は

{7}

になりました。

同じように、重複している要素が b から削除されました。

a にも b にもあるものは?

ここでは少し注意なんですが、+ でなく & を使います。

a = {1, 2, 3, 4, 5, 6}
b = {2, 3, 6, 7}

print(b & a)

結果は

{2, 3, 6}

 

 

ここからは、数学の集合を思い起こしてくださいね。

まず、集合 a b があります。

>>> a = {1, 2, 3, 4, 5, 6}
>>> b = {2, 3, 6, 7}

ここから論理和の話になります。

論理和

aまたはbに在るもの(論理和)

>>> a = {1, 2, 3, 4, 5, 6}
>>> b = {2, 3, 6, 7}
>>> a | b

{1, 2, 3, 4, 5, 6, 7}

論理積

ところで、「aにもbにも在るもの」を調べる場合に「+」は使えません。「&」を使います。

a にもbにも在るもの(論理積)

>>> a = {1, 2, 3, 4, 5, 6}
>>> b = {2, 3, 6, 7}
>>> a & b

{2, 3, 6}

こうですね。

もし、間違って「+」を使うと、エラーが返ります。

>>> a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'

 

排他的論理和

最後に排他的論理和です。

aとbで重複しないものですね。

>>> a = {1, 2, 3, 4, 5, 6}
>>> b = {2, 3, 6, 7}
>>> a ^ b
{1, 4, 5, 7}

 

コメント