セットの比較・作成・更新 | Python-izm

セットの比較・作成・更新

Pythonセットは、セット同士の比較や反復可能オブジェクトとの比較をさまざまな条件で行うことができます。またその結果をもって新たなセットを作成したり、既存のセットを更新することも可能で、一部の関数は演算子を用いても同じ結果を得ることができます。

セットを比較

isdisjointはセットと引数の反復可能オブジェクトとの間で共通の要素を持たないときにTrueとなります。issubsetはセットの全要素が引数の反復可能オブジェクトに含まれているときにTrueとなります。issupersetは引数の反復可能オブジェクトの全要素がセットに含まれているときにTrueとなります。

test_set_1 = set({'python', '-', 'izm', '.', 'com'})

print(test_set_1.isdisjoint({'python', 'izm'}))
print(test_set_1.isdisjoint({1, 2, 3}))

print('----------------------------')

print(test_set_1.issubset({'python', 'izm'}))
print(test_set_1.issubset({'www', 'python', '-', 'izm', '.', 'com'}))

print('----------------------------')

print(test_set_1.issuperset({'python', 'izm'}))
print(test_set_1.issuperset({'www', 'python', '-', 'izm', '.', 'com'}))
False
True
----------------------------
False
True
----------------------------
True
False

issubsetissupersetは演算子を用いることでも同様の結果を得ることができます。

test_set_1 = {'python', '-', 'izm', '.', 'com'}

# issubsetと同じ
print(test_set_1 <= {'python', 'izm'})
print(test_set_1 <= {'www', 'python', '-', 'izm', '.', 'com'})

print('----------------------------')

# issupersetと同じ
print(test_set_1 >= {'python', 'izm'})
print(test_set_1 >= {'www', 'python', '-', 'izm', '.', 'com'})
False
True
----------------------------
True
False

セットを比較して作成

unionはセットと引数の反復可能オブジェクトのすべての要素を持つセットを作成します。intersectionはセットと引数の反復可能オブジェクトとの間における共通の要素を新たなセットとして作成します。differenceはセットに含まれていて引数の反復可能オブジェクトには含まれない要素を持つ新たなセットを作成します。symmetric_differenceはセットと引数の反復可能オブジェクトのどちらかだけに含まれる要素を持つ新たなセットを作成します。

test_set_1 = {'python', 'izm', 'com'}

print(test_set_1.union({'python', 'www'}))
print(test_set_1.intersection({'python', 'www'}))
print(test_set_1.difference({'python', 'www'}))
print(test_set_1.symmetric_difference({'python', 'www'}))
{'com', 'www', 'izm', 'python'}
{'python'}
{'com', 'izm'}
{'com', 'www', 'izm'}

また演算子を用いることでも同様の結果を得ることができます。

test_set_1 = {'python', 'izm', 'com'}

print(test_set_1 | {'python', 'www'})
print(test_set_1 & {'python', 'www'})
print(test_set_1 - {'python', 'www'})
print(test_set_1 ^ {'python', 'www'})
{'com', 'www', 'izm', 'python'}
{'python'}
{'com', 'izm'}
{'com', 'www', 'izm'}

セットを比較して更新

intersection_updateはセットと引数の反復可能オブジェクトとの間における共通の要素を持つセットへ更新します。difference_updateは引数の反復可能オブジェクトに含まれる要素を除外したセットへ更新します。symmetric_difference_updateはセットと引数の反復可能オブジェクトのどちらかだけに含まれる要素を持つセットへ更新します。

test_set_1 = {'python', 'izm', 'com'}
test_set_1.intersection_update({'python', 'www'})
print(test_set_1)

test_set_1 = {'python', 'izm', 'com'}
test_set_1.difference_update({'python', 'www'})
print(test_set_1)

test_set_1 = {'python', 'izm', 'com'}
test_set_1.symmetric_difference_update({'python', 'www'})
print(test_set_1)
{'python'}
{'com', 'izm'}
{'com', 'www', 'izm'}

また演算子を用いることでも同様の結果を得ることができます。

test_set_1 = {'python', 'izm', 'com'}
test_set_1 &= {'python', 'www'}
print(test_set_1)

test_set_1 = {'python', 'izm', 'com'}
test_set_1 -= {'python', 'www'}
print(test_set_1)

test_set_1 = {'python', 'izm', 'com'}
test_set_1 ^= {'python', 'www'}
print(test_set_1)
{'python'}
{'com', 'izm'}
{'com', 'www', 'izm'}