今回は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つの型をマスターしましたが、それぞれの違いを良く理解しておいてください。
- セットとは
- セットの作り方、セットへの型変換
- アイテムの追加、削除
- セットの論理演算
コメントを残す