Python の Set
Python の Set とは?
Set (セット、「集合」の意) というのは、順序付けされていない一意の要素 (重複のない要素) で構成された、コレクションです。
セットを作成するには set を呼びます。
次の例をみてください。ここでは、リストと文字列からセットを作成しています。
>>> L = ['a', 'a', 'b', 'c', 'c', 'a']
>>> S = set(L) # リストからセットを作成
>>> S
set(['a', 'c', 'b']) # 重複する文字がなくなった
>>> M = set('Hello') # 文字列からセットを作成
>>> M
set(['H', 'e', 'l', 'o'])
Python Set の演算
セットは下記のような算術演算ができます。
>>> A = set('Hello') # セット A を作成
>>> B = set('World') # セット B を作成
>>> A
set(['H', 'e', 'l', 'o'])
>>> B
set(['d', 'r', 'o', 'W', 'l'])
>>> A - B # A から B に含まれる要素を削除
set(['H', 'e'])
>>> A | B # A と B の要素の和
set(['e', 'd', 'H', 'l', 'o', 'r', 'W'])
>>> A & B # A と B の両方に含まれる要素
set(['l', 'o'])
>>> A ^ B # A と B に含まれるが、両方に含まれるものを除く
set(['e', 'd', 'H', 'r', 'W'])
セット(集合) の包含関係については、不等号で調べることができます。
次のセットを考えます。
# 黒い文字は要素(元)であり、灰色の文字はセットの名前にしています。
A, B, C それぞれの要素 (数学的に言えば元) は次の通りです。
>>> A = { 1, 2, 4 }
>>> B = { 2, 3, 5 }
>>> C = { 2, 3, 4, 5 }
このとき、セット B はセット C の真部分集合 (\(B \subset C\) かつ \(B \ne C\)) であるため、次の式が True となります。
>>> B < C
True
A は B の部分集合ではありません。
>>> A <= B
False
A と同じ要素を持つセット D を考えると次の関係があります。
>>> D = { 1, 2, 4 }
>>> A <= D
True
>>> D <= A
True
>>> A < D
False
>>> A == D
True
以上、Python の Set の使い方を説明しました。