集合型
{}波かっこ(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}
コメント