集合とは
・集合を使って、リストやタプルから一意の要素を取り出せます
・{}内にカンマ区切りで要素を配置するか、set関数にシーケンス型(リストやタプル)を渡すことで生成します。
・set(リスト名)でリスト内にある要素から重複した要素を消して取り出せる
・for文とかで回して重複しているものを消したいときとかにも使える
集合のメソッド一覧
・set()
集合を新規作成
・{[リスト]}
リストなどを{}で囲むと集合を初期化できる。set2 = {1, 2, 'A', ('x', 'y')} # 初期データ
・add(文字列など)
()内の文字列や数値をsetの最後に代入する。set1.add(2)
・remove()
setから要素を取り除く。指定した要素がないときはKeyErrorが発生する
・discard()
setから要素を取り除く。指定した要素がないときは無視するのでエラーはでない。
・pop()
setから要素を取り除いて、それを返す。setが空の時はエラーを返す。
削除した要素を別のリストに移したり表示させたい場合などはpopを使う
・clear()
setからすべての要素を取り除く
使い方
①空の集合を作成
my_set = set()
②初期値を持つ集合を作成
my_set = {1, 2, 3, 4}
③リストやタプルから集合を作成し、重複する要素を削除する
list_example = [1, 1, 2, 3]
my_set = set(list_example)
集合の計算
①和集合 (Union)
・説明: 2つの集合を合わせた新しい集合を作成する。
・記号: |
・メソッド: union()
【例】
set_a = {1, 2, 3}
set_b = {3, 4, 5}
記号
print(set_a | set_b) # 出力: {1, 2, 3, 4, 5}
メソッド
print(set_a.union(set_b)) # 出力: {1, 2, 3, 4, 5}
②積集合 (Intersection)
・説明: 2つの集合に共通する要素で新しい集合を作成する
・記号: &
・メソッド: intersection()
【例】
set_a = {1, 2, 3}
set_b = {3, 4, 5}
記号
print(set_a & set_b) # 出力: {3}
メソッド
print(set_a.intersection(set_b)) # 出力: {3}
③差集合 (Difference)
説明: 1つ目の集合に存在する要素から、2つ目の集合の要素を引いた残りの要素で新しい集合を作成する。
記号: -
メソッド: difference()
【例】
set_a = {1, 2, 3}
set_b = {3, 4, 5}
記号
print(set_a - set_b) # 出力: {1, 2}
メソッド
print(set_a.difference(set_b)) # 出力: {1, 2}
④ 対称差 (Symmetric Difference)
・説明: 片方の集合にしか存在しない要素(共通しない要素)で新しい集合を作成する。
・記号: ^
・メソッド: symmetric_difference()
【例】
set_a = {1, 2, 3}
set_b = {3, 4, 5}
記号
print(set_a ^ set_b) # 出力: {1, 2, 4, 5}
メソッド
print(set_a.symmetric_difference(set_b)) # 出力: {1, 2, 4, 5}
部分集合の確認 (Subset)
説明: 一方の集合が他方の集合の部分集合であるか確認します。
メソッド: issubset()
set_c = {1, 2}
set_d = {1, 2, 3}
メソッド
print(set_c.issubset(set_d)) # 出力: True
上位集合の確認 (Superset)
メソッド: issuperset()
説明: 一方の集合が他方の集合を含む上位集合であるか確認します。
print(set_d.issuperset(set_c)) # 出力: True