今回はPythonの型であるSet (セット)について、詳しく見ていきましょう。未読の方は、先に“リストの使い方”“タプルの使い方”“辞書の使い方”を読んでいただけると理解が深まると思います。



セットとは

Set (セット) とはリストと同じく複数のデータを格納することができますが、集合を取り扱う型になります。セットには“同じ要素が重複しない”“要素の順番がない”という2つの大きな特徴があります。

例えば、Aという集合にAという集合を追加すると、リストの場合は”A A”となりますが、セットの場合は”A”のみです。また、”A”に”A, B”という集合を追加すると、リストの場合は”A, A, B”となりますが、セットの場合は”A, B”となります。

このように集合の概念を取り扱うことができるため、セットでは”A, B”と”B, A”が同じものになります。各要素に対して順番が定義されません。

セットの作り方、セットへの型変換

セット作成: set()
セットへの型変換: set()

セットを作成する、または他の型をセットへ変更するには set()を使用します。

set0 = ()
set1 = set("python")
set1
Out[0]: {'h', 'n', 'o', 'p', 't', 'y'}
set2 = set([0, 1, 2, 3, 4, 5])
set2
Out[1]: {0, 1, 2, 3, 4, 5}
list1 = [6, 7, 8, 9, 10]
list1
Out[2]: [6, 7, 8, 9, 10]
set3 = set(list1)
set3
Out[3]: {6, 7, 8, 9, 10}

Set0は空の辞書を作成しました。Set1は文字列”Python”をセットに変更しました。各文字が1つづつセットの要素になります。Set2は6つの数字列のセットオブジェクトを作成しました。数字列をリストとして扱う必要があるため、“[]”で数字列を囲います。Set3はリストオブジェクトのlist1からセットオブジェクトを作成しています。タプルもリストと同じようにセットへ型変換することができます。

辞書をセットへ変更する際も同じようにset()を使用することができます。ただし、キーのみがセットに変換されます。値のみのセットを作成する際は、.values()を追加する必要があります。

dic1 = { 'Sato':'Tokyo', 'Suzuki':'Osaka', 'Kato':'Fukuoka' }
set4 = set(dic1)
set4
Out[4]: {'Kato', 'Sato', 'Suzuki'}
set5 = set(dic1.values())
set5
Out[5]: {'Fukuoka', 'Osaka', 'Tokyo'}



アイテムの追加、削除

セットのアイテム追加: .add()
セットのアイテム削除: .remove()
セットを空にする: .clear()

set2 = set([0, 1, 2, 3, 4, 5])
set2.add(6)
set6
Out[6]: {0, 1, 2, 3, 4, 5, 6}
set2.remove(0)
Out[7]: {1, 2, 3, 4, 5, 6}
set2.clear()
Out[8]: set()

上の例では、set2を作成した後に”6″を追加、”0″を削除、そしてすべてのアイテムを削除しました。

セットの論理演算

積集合 (and): &
和集合 (or): |
排他的論理和 (nor): ^
差集合: –

セットは集合を扱う型なので、論理演算が適用できます。

set6 = set([0, 1, 2, 3, 4, 5])
set7 = set([5, 8, 9, 10])
set8 = set6 & set7
set8
Out[9]: {5}
set9 = set6 | set7
set9
Out[10]: {0, 1, 2, 3, 4, 5, 8, 9, 10}
set10 = set6 ^ set7
set10
Out[11]: {0, 1, 2, 3, 4, 8, 9, 10}
set11 = set6 - set7
set11
Out[12]: {0, 1, 2, 3, 4}

初めに数字列のセットであるset6とset7を用意して、積集合、和集合、排他的論理和、差集合をそれぞれ計算してみました。数学の論理演算通りです。

まとめ

今回はPythonのSet (セット)型 について見てきました。これでリスト、タプル、辞書、セットと4つの型をマスターしましたが、それぞれの違いを良く理解しておいてください。

  •  セットとは
  •  セットの作り方、セットへの型変換
  •  アイテムの追加、削除
  •  セットの論理演算