Pythonのsetの基本的な使い方 : set()

セットは集合を表すデータ型で、リスト等と同様に複数の要素をもつことができます。

集合なので、リストとは異なり要素は順番をもちません。また、重複した要素は取り除かれます。

ここでは、Pythonにおけるセットの基本的な使い方について説明します。

セットを生成する

セットを生成するにはset()を使います。

set([1,2,3,4,5])                                # set([1,2,3,4,5]) 
set([1,1,2,2,3,3])                              # set([1,2,3])
set({'dog':'inu', 'cat':'neko', 'bird':'tori'}) # set(['dog', 'cat', 'bird']) 

セットを生成する際には重複する要素は取り除かれます。

また、ディクショナリからセットを生成すると、キーがセットの要素となります。

要素数を取得する

セットの要素数を取得するにはlen()を使います。

s = set([1,2,3]) # セットを生成
len(s)           # 3

要素を追加/削除する

セットに要素を追加するにはadd()を使います。

セットから要素を削除するにはremove()を使います。

セットを空にするにはclear()を使います。

s = set()   # 空のセットを生成(set([]))
s.add(1)    # set([1])
s.add(2)    # set([1, 2])
s.add(3)    # set([1, 2, 3])
s.remove(2) # set([1, 3])
s.clear()   # set([])

集合演算(論理演算)をする

セットには集合演算を行うための演算子やメソッドが用意されています。

2つのセットの和集合、積集合、差集合を求める例を示します。

s1 = set([10, 20, 30, 40, 50])
s2 = set([10, 30, 50, 70, 90])
s3 = set([10, 20, 30])

s1 | s2 # 和集合を求める set([10, 20, 30, 40, 50, 70, 90])
s1 & s2 # 積集合を求める set([10, 30, 50])
s1 - s2 # 差集合を求める set([20, 40])

このように、それぞれ(| , &, -)といった 演算子を用います。

また、あるセットがほかのセットの部分集合であるか否かを判定することもできます。

s3.issubset(s1)   # True (s3がs1の部分集合であればTrueを返す)
s3.issubset(s2)   # False
s1.issuperset(s3) # True (s1がs3の親集合であればTrueを返す)

イベント

2017/12/05(火)
Design Thinking Square