Python3集合

集合(set)は、ランダムな繰り返されない要素のシーケンスです。

中括弧{}またはset()関数を使用して集合を作成できます。注意点:空の集合を作成するには、{}を使用して空の辞書を作成するため、{}の代わりにset()を使用する必要があります。

フォーマットの作成

parame = {value01,value02,...}

または

set(value)

実例(Python 3.0以降)

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)  # これが重複排除機能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket   # 要素が集合にあるかどうかをすばやく判断する
True
>>> 'crabgrass' in basket
False

>>> # 2集合間の動作を以下に示す
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b    # 集合aに含まれているが、集合bには含まれていない要素
{'r', 'd', 'b'}
>>> a | b   # 集合aまたはbに含まれるすべての要素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b    # 集合aとbの両方に含まれる要素
{'a', 'c'}
>>> a ^ b     # 集合aとbに同時に含まれていない要素
{'r', 'd', 'b', 'm', 'z', 'l'}

リスト内包表記と同様に、集合が集合内包表記(Set comprehension)をサポートします。

実例(Python 3.0以降)

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

集合の基本操作

要素を追加します

構文形式は次のとおりです。

s.add(x)

要素xを集合sに追加します。要素がすでに存在する場合は、何もしません。

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Yahoo', 'Facebook', 'Google', 'Ceodata'}

要素を追加するのに別の方法があります。パラメーターは、リスト、タプル、辞書などを使用できます。構文形式は次のとおりです。

s.update(x)

カンマで区切って、複数のxを含めることができます。

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Yahoo', 'Ceodata'}
>>> thisset.update([1,4],[5,6])  
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Yahoo', 'Ceodata'}
>>> 

要素を削除します

構文形式は次のとおりです。

s.remove(x)

要素xが集合sから削除します。要素が存在しない場合、エラーが発生します。

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> thisset.remove("Yahoo")
>>> print(thisset)
{'Google', 'Ceodata'}
>>> thisset.remove("Facebook")   # 要素が存在しないとエラーが発生する
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>> 

集合内の要素を削除する方法はもう一つあります。要素が存在しない場合、エラーは発生しません。 形式は次のとおりです。

s.discard(x)

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> thisset.discard("Facebook")  # 要素が存在しなくてもエラーが発生ない
>>> print(thisset)
{'Yahoo', 'Google', 'Ceodata'}

集合内の要素をランダムに削除するように設定することもできます。構文形式は次のとおりです。

s.pop() 

スクリプトモードの実例(Python 3.0以降)

thisset = set(("Google", "Ceodata", "Yahoo", "Facebook"))
x = thisset.pop()

print(x)

出力結果は以下になります。

$ python3 test.py 
Ceodata

テストを複数回実行した結果は異なります。

集合(set)のpopメソッドは、集合をランダムで配置しランダムな集合の左側から最初の要素を削除します。

集合内の要素の数を計算します

構文形式は次のとおりです。

len(s)

集合s内の要素の数を数えます。

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> len(thisset)
3

集合を空にします

構文形式は次のとおりです。

s.clear()

集合sを空にします。

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> thisset.clear()
>>> print(thisset)
set()

要素が集合に存在するかどうかを判別します

構文形式は次のとおりです。

x in s

要素xが集合sにあるかどうかを判断し、存在する場合はTrueを返し、存在しない場合はFalseを返します。

実例(Python 3.0以降)

>>> thisset = set(("Google", "Ceodata", "Yahoo"))
>>> "Ceodata" in thisset
True
>>> "Facebook" in thisset
False
>>> 

集合の組み込みメソッドの完全なるリスト

メソッド説明
add()集合に要素を追加する。
clear()集合内のすべての要素を削除する。
copy()集合をコピーする。
difference()複数の集合の差集合を返す。
difference_update()集合内の要素を削除する。その要素は指定された集合にも存在する。
discard()集合内の指定された要素を削除する。
intersection()集合の共通部分を返す。
intersection_update()集合の共通部分を返す。
isdisjoint()2つの集合に同じ要素が含まれているかどうかを判断する。含まれていない場合はTrueを返し、含まれていない場合はFalseを返す。
issubset()指定された集合がメソッドパラメータ集合のサブ集合であるかどうかを判別する。
issuperset()メソッドのパラメーター集合が指定された集合のサブ集合であるかどうかを判別する。
pop()要素をランダムに削除する。
remove()指定された要素を削除する。
symmetric_difference()2つの集合の重複されていない要素の集合を返す。
symmetric_difference_update()現在の集合内での別の指定された集合内の同じ要素を削除し、現在の集合に別の指定された集合の異なる要素を挿入する。
union()2つの集合の和集合を返す。
update()集合に要素を追加する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です