Pythonエンジニア認定基礎試験の勉強メモです📝
ここではset
について。
setとは
集合を扱うデータ型で、要素を重複しないように保持する。
setに要素を追加するには add()
メソッドが使用できるが、要素同士は順序を持たないため
要素を取り出す時も、決まった順序で取り出されることはない。
集合同士で、演算も可能。
set()関数で定義できる
set()関数
の引数はリストやタプルなどの反復可能体。
# 引数: リスト
set_1 = set(['a', 'b', 'c', 'd'])
# 引数: タプル
set_2 = set((1, 2, 3, 4))
特定の要素を含むかどうかの判定
sample_set = {'sample', 'keyword'}
print('keyword' in sample_set) # True
print('password' in sample_set) # False
この処理の時間計算量はO(1)
になる。
set同士の演算
和集合
a, bふたつのsetを対象としたとき、a, bいずれかもしくは両方に含まれる要素を求める。
set_3 = {'apple', 'banana', 'peach'}
set_4 = {'orange', 'cherry', 'apple', 'banana'}
# 演算子で和集合を求める場合
union_1 = set_3 | set_4
# メソッドで和集合を求める場合
union_2 = set_3.union(set_4)
print(union_1) # {'apple', 'banana', 'peach', 'orange', 'cherry'}
print(union_2) # {'apple', 'banana', 'peach', 'orange', 'cherry'}
差集合
a, bふたつのsetを対象とした時、a-b
なら、aにはあってbにはない要素を求める。
set_5 = {'Tokyo', 'Osaka', 'Fukuoka'}
set_6 = {'Osaka', 'Fukuoka', 'Okinawa'}
# 演算子で差集合を求める場合
diff_1 = set_5 - set_6
# メソッドで差集合を求める場合
diff_2 = set_5.difference(set_6)
print(diff_1) # {'Tokyo'}
print(diff_2) # {'Tokyo'}
積集合
a, bふたつのsetを対象としたとき、どちらにも共通して含まれる要素を求める。
set_7 = {'dog', 'cat', 'fox', 'deer'}
set_8 = {'fox', 'bird', 'deer', 'cow'}
# 演算子で積集合を求める場合
intersection_1 = set_7 & set_8 # {'fox', 'deer'}
# メソッドで積集合を求める場合
intersection_2 = set_7.intersection(set_8) # {'fox', 'deer'}
対称差
a, bふたつのsetを対象としたとき、どちらかにしか含まれない要素を求める
set_9 = {'red', 'yellow', 'blue', 'green'}
set_10 = {'yellow', 'green', 'pink', 'blue'}
# 演算子で対称差を求める場合
symmetric_diff_1 = set_9 ^ set_10 # {'red', 'pink'}
# メソッドで対称差を求める場合
symmetric_diff_2 = set_9.symmetric_difference(set_10) # {'red', 'pink'}