Python | セットの使い方

2021年5月21日

公開日:2021/5/21

Pythonでは,リストやタプル,辞書と同様に,セットを利用すると様々な値を格納することができる.セットは同じ値を持つことができない特徴がある.以下に「セットの基本」と「セットのメソッド」,「セットの関数」について説明する.

◆実施環境

Python 3.8.8

  1. セットの基本

■セットの作成
“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
  1. セットのメソッド

セット操作に必要な以下メソッドの説明をする.

“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

 

  1. セットの関数

セット操作に必要な関数(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'}

以上

 

Pythonセット

Posted by クマガイ