Python | セットの使い方
公開日:2021/5/21
Pythonでは,リストやタプル,辞書と同様に,セットを利用すると様々な値を格納することができる.セットは同じ値を持つことができない特徴がある.以下に「セットの基本」と「セットのメソッド」,「セットの関数」について説明する.
◆実施環境
Python 3.8.8
- セットの基本
■セットの作成
“set1″という名前のセットを作成した.
set1 = {'a','a','b','c','d','e',8}
print(set1)
# set1の中に'b'があるか確認.TrueとFalseで返す
print('b' in set1)
# set1の中に'a'がないか確認.TrueとFalseで返す
print('a' not in set1)
■実行結果
“set1″には"a"が2つあったが,以下では重複がなくなっている.
{'e', 8, 'd', 'c', 'b', 'a'} True False
- セットのメソッド
セット操作に必要な以下メソッドの説明をする.
“add", “update", “copy", “remove", “discard", “pop", “clear", “union(|)", “intersection(&)", “difference(-)", “symmentric_difference(^)", “issubset", “issuperset", “isdisjoint"
■add
セットに1つ値を追加する.”add(追加の値)”を利用する
set2 = {'a','b','c','d','e',8}
set2.add('h')
print(set2)
■実行結果
{'a', 'e', 8, 'c', 'h', 'b', 'd'}
■update
セットに他のセットの値を追加する.”update(他のセット)”を利用する
set4 = {'a','b',8}
set5 = {'m',4,'n'}
set4.update(set5)
print(set4)
■実行結果
{'a', 4, 'n', 8, 'm', 'b'}
■copy
セットをコピーする.”copy()”を利用する.
set2 = {'a','b','c','d','e',8}
set3 = set2.copy()
print(set3)
■実行結果
{'a', 'e', 'd', 'b', 8, 'c'}
■remove
セット内の1つの値を削除する.存在しない値を指定すると"KeyError"になる.”remove(削除対象の値)”を利用する.
set2 = {'a','b','c','d','e',8}
set2.remove('a')
print(set2)
# 存在しない要素を指定するとKeyErrorになる
set2.remove('y')
print(set2)
■実行結果
{'d', 'e', 8, 'c', 'b'}
KeyError: 'y'
■discard
remove同様に,セット内の1つの値を削除する.セット内に存在しない値を対象にしても"KeyError"にならず,セットを返す.”discard(削除対象の値)”を利用する.
set2 = {'a','b','c','d','e',8}
set2.discard('a') print(set2)
# 存在しない要素を指定してもErrorにならず,set2を返す
set2.discard('y')
print(set2)
■実行結果
{'e', 8, 'd', 'c', 'b'}
{'e', 8, 'd', 'c', 'b'}
■pop
セット内の1つの値をランダムで削除する.”pop()”を利用する.
set2 = {'a','b','c','d','e',8}
print(set2.pop())
■実行結果
# 1回目
b
# 2回目
e
■clear
セット内の全ての値を削除する.”clear()”を利用する.
set2 = {'a','b','c','d','e',8} set2.clear()
print(set2)
■実行結果
set()
■union(|)
セット同士の和集合を返す.つまりセット同士の全ての値を返す."セット名 | セット名"もしくは,”union(セット名)”を利用する.
set9 = {'a',1,'b',3}
set10 = {'a',1,'c',4}
# やり方1
set11 = set9 | set10
print(set11)
# やり方2
set11 = set9.union(set10)
print(set11)
■実行結果
{1, 3, 'c', 4, 'a', 'b'}
{1, 3, 4, 'b', 'c', 'a'}
■intersection(&)
セット同士の積集合を返す.つまりセット同士の共通する値を全て返す."セット名 & セット名"もしくは,”intersection(セット名)”を利用する.
set9 = {'a',1,'b',3}
set10 = {'a',1,'c',4}
# やり方1
set11 = set9 & set10
print(set11)
# やり方2
set11 = set9.intersection(set10)
print(set11)
■実行結果
{1, 'a'}
{1, 'a'}
■difference(-)
セット同士の差集合を返す.つまり片方セットから,セット同士の共通する値を除いた値を全て返す."セット名 – セット名"もしくは,”difference(セット名)”を利用する.
set9 = {'a',1,'b',3}
set10 = {'a',1,'c',4}
# やり方1
set11 = set9 - set10
print(set11)
# やり方2
set11 = set9.difference(set10)
print(set11)
■実行結果
{'b', 3}
{3, 'b'}
■symmentric_difference(^)
セット同士の対象差集合を返す.つまりセット同士の共通しない値を全て返す."セット名 ^ セット名"もしくは,”symmentric_difference(セット名)”を利用する.
set9 = {'a',1,'b',3}
set10 = {'a',1,'c',4}
# やり方1
set11 = set9 ^ set10
print(set11)
# やり方2
set11 = set9.symmetric_difference(set10)
print(set11)
■実行結果
{'b', 3, 4, 'c'}
{3, 4, 'b', 'c'}
■issubset
セットの全ての値が包括されていることを確認する.”セット名1.issubset(セット名2)”を利用する.
set11 = {'a',1}
set12 = {'a',1,'c'}
print(set11.issubset(set12))
■実行結果
“set11″の全ての値が"set12″に包括されているので,"True"が返される.
True
■issuperset
セットのいずれかの値が,別のセットの範囲外にあることを確認する.”セット名1.issubset(セット名2)”を利用する.
set11 = {'a',1}
set12 = {'a',1,'c'}
print(set12.issuperset(set11))
■実行結果
“set12″の"c"は,"set11″の範囲外にあるので,"True"が返される.
True
■isdisjoint
セットの全ての値が,別のセットの範囲外にあることを確認する.”セット名1.isdisjoint(セット名2)”を利用する.
set13 = {'d','e'}
set12 = {'a',1,'c'}
print(set13.isdisjoint(set12))
■実行結果
“set13″の全ての値(“d"および"e")が,"set12″の範囲外にあるので,"True"が返される.
True
- セットの関数
セット操作に必要な関数(len, set)の説明をする.
■len
セット内の値の個数を返す.”len(セット名)”を利用する.
set2 = {'a','b','c','d','e',8} print(len(set2))
■実行結果
6
■set
リストなどをセットに変更する.”set(リスト名)”を利用する.
list5 = [1,2,'rice','bread','pasta',3]
set8 = set(list5)
print(set8)
■実行結果
{1, 2, 'rice', 3, 'bread', 'pasta'}
以上