セットの比較・作成・更新
Pythonのセットは、セット同士の比較や反復可能オブジェクトとの比較をさまざまな条件で行うことができます。またその結果をもって新たなセットを作成したり、既存のセットを更新することも可能で、一部の関数は演算子を用いても同じ結果を得ることができます。
「isdisjoint」はセットと引数の反復可能オブジェクトとの間で共通の要素を持たないときにTrueとなります。「issubset」はセットの全要素が引数の反復可能オブジェクトに含まれているときにTrueとなります。「issuperset」は引数の反復可能オブジェクトの全要素がセットに含まれているときにTrueとなります。
# -*- coding:utf-8 -*-
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
「issubset」と「issuperset」は演算子を用いることでも同様の結果を得ることができます。
# -*- coding:utf-8 -*-
test_set_1 = set({'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
これらのメソッドは新しいセットを作成します。
# -*- coding:utf-8 -*-
test_set_1 = set({'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'})
--実行結果--
set(['python', 'www', 'com', 'izm']) set(['python']) set(['com', 'izm']) set(['www', 'com', 'izm'])
「union」はセットと引数の反復可能オブジェクトのすべての要素を持つセットを作成します。「intersection」はセットと引数の反復可能オブジェクトとの間における共通の要素を新たなセットとして作成します。「difference」はセットに含まれていて引数の反復可能オブジェクトには含まれない要素を持つ新たなセットを作成します。「symmetric_difference」はセットと引数の反復可能オブジェクトのどちらかだけに含まれる要素を持つ新たなセットを作成します。
また演算子を用いることでも同様の結果を得ることができます。
# -*- coding:utf-8 -*-
test_set_1 = set({'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'}
--実行結果--
set(['python', 'www', 'com', 'izm']) set(['python']) set(['com', 'izm']) set(['www', 'com', 'izm'])
これらのメソッドは既存のセットを更新します。
# -*- coding:utf-8 -*-
test_set_1 = set({'python', 'izm', 'com'})
test_set_1.intersection_update({'python', 'www'})
print test_set_1
test_set_1 = set({'python', 'izm', 'com'})
test_set_1.difference_update({'python', 'www'})
print test_set_1
test_set_1 = set({'python', 'izm', 'com'})
test_set_1.symmetric_difference_update({'python', 'www'})
print test_set_1
--実行結果--
set(['python']) set(['com', 'izm']) set(['www', 'com', 'izm'])
「intersection_update」はセットと引数の反復可能オブジェクトとの間における共通の要素を持つセットへ更新します。「difference_update」は引数の反復可能オブジェクトに含まれる要素を除外したセットへ更新します。「symmetric_difference_update」はセットと引数の反復可能オブジェクトのどちらかだけに含まれる要素を持つセットへ更新します。
また演算子を用いることでも同様の結果を得ることができます。
# -*- coding:utf-8 -*-
test_set_1 = set({'python', 'izm', 'com'})
test_set_1 &= {'python', 'www'}
print test_set_1
test_set_1 = set({'python', 'izm', 'com'})
test_set_1 -= {'python', 'www'}
print test_set_1
test_set_1 = set({'python', 'izm', 'com'})
test_set_1 ^= {'python', 'www'}
print test_set_1
--実行結果--
set(['python']) set(['com', 'izm']) set(['www', 'com', 'izm'])
これが自然にできればPython中級者の仲間入り!?
