set型とは、リストやタプルと同様に、複数の値を持つことが出来ますが、順番や辞書のような値を呼び出すキーもありません。
買い物袋の中に適当に入れた商品みたいなイメージですかね。
さらにset型は、重複する値を持つことも出来ません。
ではset型は何ができるかといえば、皆さんが高校数学で学んだ「集合」の演算が出来ます。
ここでは、set型の基本的な使い方(要素の追加や削除)や、和集合、積集合、差集合、対称差集合といった集合の演算方法を解説します。
set型の使い方
それでは、set型の記述方法や、要素の追加・削除を解説します。
set型の使い方:記述方法
set型の記述方法は、2つあります。
- 要素をカンマ(,)で区切って、全体を波括弧({})で囲う
- set()関数を使う
記述例:要素をカンマ(,)で区切って、全体を波括弧({})で囲う
>>> Delicious_stick = {' チーズ味','明太子味','ピザ味'}
>>> Delicious_stick
{'明太子味', 'ピザ味', ' チーズ味'}
記述例:set()関数を使う
>>> Delicious_stick = set() #空の集合型を生成
>>> Delicious_stick
set()
>>> Delicious_stick = set({' チーズ味','明太子味','ピザ味'}) #空の集合型を生成
>>> Delicious_stick
{'明太子味', 'チーズ味', 'ピザ味'}
set型の使い方:要素の追加・削除
要素の追加(add)・削除(remove,discard, pop, clear)を解説します。
要素の追加: add()
set型に要素を追加する時は、add()を使います。
要素の追加
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> Delicious_stick.add('コーンポタージュ味')
>>> Delicious_stick
{'明太子味', 'チーズ味', 'ピザ味', 'コーンポタージュ味'}
要素の削除: remove(),discard(), pop(), clear()
set型内の要素を削除する時は、目的に応じてremove(), discard(),pop(), clear()のどれかを使います。
remove()メソッド
Set型から特定の要素を削除する時は、remove()メソッドを使います。
引数に削除したい要素を記述します。
記述例
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> Delicious_stick.remove('ピザ味')
>>> Delicious_stick
{'明太子味', 'チーズ味'}
set型に無い要素を指定するとエラーになります。
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> Delicious_stick.remove('カレー味')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'カレー味'
エラーを発生させたく無い場合は、discard()メソッドを使います。
discard()メソッド
remove()メソッドと同様に、特定の要素を削除する時に使います。
さらにSet型に無い要素を指定してもエラーになりません。
記述例
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> Delicious_stick.discard('ピザ味')
>>> Delicious_stick
{'明太子味', 'チーズ味'}
Set型に無い要素を指定してもエラーになりません。
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> Delicious_stick.discard('カラスミ味')
>>> Delicious_stick
{'明太子味', 'チーズ味', 'ピザ味'}
pop()メソッド
pop()メソッドは集合から要素を削除し、削除した要素を返しますが、要素の指定はできません。
記述例
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> p_stick = Delicious_stick.pop()
>>> print(Delicious_stick)
{'チーズ味', 'ピザ味'}
>>> print(p_stick)
明太子味
clear()メソッド
clear()メソッドは全ての要素を削除します。
削除されたset型は空要素となります。
記述例
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> Delicious_stick.clear()
>>> print(Delicious_stick)
set()
set型の使い方:要素数のカウント
set型の要素数を知りたい場合は、len()メソッドを使うと要素数を取得できます。
記述例
>>> Delicious_stick = {'チーズ味','明太子味','ピザ味'}
>>> print(len(Delicious_stick))
3
len()メソッドの使い方は以下を参照願います。
→Python:len関数の使い方。文字列型やリスト型の数をカウント
set型の計算(集合演算)
set型では、高校数学でお馴染みの集合演算が簡単にできます。
集合の計算
- 和集合
- 積集合
- 差集合
- 対称差集合
和集合
和集合とは、2つの集合(集合A,集合B)の少なくとも一方に属する要素全体の集合をAとBの和集合と言います。
和集合の求め方は2つあります。
- 演算子の | を使用
- union メソッドを使用(unionとは「連合・結合・合併」の事です。)
記述例
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> c = a | b #演算子の | を使用
>>> print(c)
{1, 2, 3, 4, 5, 6}
>>> c_union = a.union(b) #unionメソッドを使用
>>> print(c_union)
{1, 2, 3, 4, 5, 6}
積集合
積集合とは、2つの集合(集合A,集合B)の両方に含まれる要素の集合です。
積集合の求め方は2つあります。
- 演算子の & を使用
- intersectionメソッドを使用(intersectionとは「交差・交点」の事です。)
記述例
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> c = a & b #演算子の & を使用
>>> print(c)
{3,4}
>>> c_intersection = a.intersection(b) #intersectionメソッドを使用
>>> print(c_intersection)
{3,4}
差集合
差集合とは、2つの集合(集合A,集合B)の片方だけに含まれている要素の集合を差集合と言います。
差集合の求め方は2つあります。
- 演算子の – を使用
- differenceメソッドを使用(differenceとは「差」の事です。)
記述例
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> c = a - b #演算子の - を使用
>>> print(c)
{1,2}
>>> c_difference = a.difference(b) #differenceメソッドを使用
>>> print(c_idifference)
{1,2}
対称差集合
差集合とは、2つの集合(集合A,集合B)のどちらか片方だけに含まれている要素の集合を差集合と言います。
(積集合の逆ですね。)
差集合の求め方は2つあります。
- 演算子の ^ を使用
- symmetric_difference メソッドを使用(symmetricとは「対称」の事です。)
記述例
>>> a = {1,2,3,4}
>>> b = {3,4,5,6}
>>> c = a ^ b #演算子の ^ を使用
>>> print(c)
{1,2,5,6}
>>> c_symmetric_difference = a.symmetric_difference(b) #symmetric_differenceメソッドを使用
>>> print(c_symmetric_difference)
{1,2,5,6}