Python チュートリアル - データ型セット

  1. Python セットを作成する
  2. Python Set Update
  3. Python セットから要素を削除する
  4. Python セット操作
  5. Python セットメソッド
  6. その他の Python セット操作
  7. Python Set 組み込み関数
  8. Python 凍結セット

このセクションでは、Python でセットを作成する方法と、セットに要素を追加および削除する方法を学習します。

セットにはユニークアイテムが含まれ、要素の順不同リストです。

情報

set は可変のオブジェクトなので、セットに要素を追加したり削除したりできます。

Python セットを作成する

Python のセットは、中括弧 {} を使用して作成でき、アイテムはコンマで区切られます。組み込みのメソッド set() を使用してセットを作成することもできます。

セットの要素は、異なるデータ型にすることができます。セットの要素は不変でなければなりません。たとえば、セットの要素としてタプルを持つことはできますが、セットの要素としてセットまたは辞書またはリストを持つことはできません。

>>> x = {3, 5, 7, 2, 4, 5}		
>>> print(x)		#prints the set variable
{2, 3, 4, 5, 7}
>>> print(type(x))		#checking type of x
<class 'set'>

空のパラメーターを指定して set() メソッドを使用すると、空のリストを作成できます。空のオブジェクトを作成するために {} を書くと、それは辞書として解釈されます:

>>> x = {}
>>> print(type(x))
<class 'dict'>

>>> x = set()
>>> print(type(x))
<class 'set'>

Python Set Update

set は順序付けられたデータ型ではないため、インデックス付けとスライスを使用してセットの要素を変更することはできません。

add() メソッドを使用して、単一の要素をセットに追加できます。セットに複数の要素を追加したい場合、update() メソッドを使用する必要があります。

>>> s = {2, 4}
>>> print(s)
{2, 4}

>>> s.add(6)
>>> print(s)
{2, 4, 6}

>>> s.update([2, 4, 6])
>>> print(s)
{2, 4, 6}

>>> s.update([5,6], {7, 8, 9})
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

Python セットから要素を削除する

セットから要素を削除するには、discard() メソッドまたは remove() メソッドを使用できます。

これらのメソッドの違いは、削除する要素がセットにない場合は discard() メソッドは何もプロンプトを表示しないのに対し、削除する要素が見つからない場合は remove() はエラーを生成することです。

>>> s = {2, 4, 5, 6, 7, 8, 9}
>>> print(s)
{2, 4, 5, 6, 7, 8, 9}

>>> s.discard(6)
>>> print(s)
{2, 4, 5, 7, 8, 9}

>>> s.remove(8)
>>> print(s)
{2, 4, 5, 7, 9}

>>> s.discard(6)		#no error
>>> s.remove(8)			#generated an error
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    s.remove(8)
KeyError: 8

pop() を使用して、セットからアイテムを削除することもできます。pop() は、1つの任意のセット要素を削除して返します。

>>> s = set("Python")
>>> s
{'o', 'n', 'h', 'P', 'y', 't'}
>>> s.pop()
o
>>> s.pop()
n
>>> s
{'h', 'P', 'y', 't'}
>>> s.clear()
>>> print(s)
set()

set clear() メソッドを使用して、すべてのセット要素をクリアできます。

>>> s = set("Python")
>>> s.clear()
>>> s
set()

Python セット操作

unionintersectiondifferencesymmetric_difference などの操作を実行できます。

2つのセット xy があるとします:

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 10, 11, 12}

連合

2つのセットの和集合は、両方のセットのすべての要素を含む新しいセットになります。

ユニオン操作を実行するには、 |演算子または union() メソッドを使用できます。

>>> print(x | y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

#using union() method on x
>>> x.union(y)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
#union on y
>>> y.union(x)
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Python セット交差点

2つのセットの交差により、両方のセットに共通するアイテムを含む新しいセットが作成されます。

交差操作を実行するには、 演算子または intersection() メソッドを使用できます。

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x & y)
{1, 2, 6}

#using intersection() method on x
>>> x.intersection(y)
{1, 2, 6}
#intersection on y
>>> y.intersection(x)
{1, 2, 6}

Python セットの違い

2つのセットの違いにより、2 番目のセットには存在しない最初のセットの要素を含む新しいセットが作成されます。

たとえば、「x-y」は y ではなく x の要素です。同様に、「y-x」は x にない y の要素です。

違いを実行するには、 - 演算子またはdifference()メソッドを使用できます。

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x - y)
{3, 4, 5}

#using difference() method on x
>>> x.difference(y)
{3, 4, 5}
#diference on y
>>> y.difference(x)
{8, 9, 7}

Python は対称差を設定します

2つのセットの対称差により、両方のセットで共通ではない要素を含む新しいセットが作成されます。

対称差を実行するには、 ^演算子または symmetric_difference() メソッドを使用できます。

>>> x = {1, 2, 3, 4, 5, 6}
>>> y = {7, 8, 9, 2, 6, 1}
>>> print(x ^ y)
{3, 4, 5, 7, 8, 9}

#using symmetric_difference() method on x
>>> x.symmetric_difference(y)
{3, 4, 5, 7, 8, 9}
#symmetric_diference on y
>>> y.symmetric_difference(x)
{3, 4, 5, 7, 8, 9}

Python セットメソッド

以下は、Python のセットに適用できるメソッドのリストです。

 方法  説明
 add()  セットに要素を追加する
 clear()  セットの要素をクリアします(セット全体をクリアします)
 copy()  セットのコピーを返します
 difference()  2 番目のセットには存在しない最初のセットの要素を含む新しいセットを返します。
 difference_update()  現在のセットから別のセットのすべての要素を削除します
 discard()  セットから特定の要素を削除する
 intersection()  両方のセットに共通のアイテムを含む新しいセットを返します。
 intersection_update()  このセットと別のセットの共通部分でセットを更新します
 isdisjoint()  2つのセットが NULL 交差点になったときに True を返します
 issubset()  別のセットに現在のセットがある場合に True を返します
 issuperset()  現在のセットに別のセットがある場合、True を返します
 pop()  セットから要素を返します
 remove()  セットから特定の要素を削除します。要素がセットにない場合、エラーが生成されます。
 symmetric_difference()  両方のセットで共通ではない要素を含む新しいセットを返します。
 symmetric_difference_update()  このセットと別のセットの対称差でセットを更新する
 union()  両方のセットのすべての要素を含む新しいセットを返します。
 update()  このセットと別のセットの和集合でセットを更新する

その他の Python セット操作

メンバーシップチェックの設定

in キーワードは、アイテムがセットのメンバーであるかどうかをテストします。

>>> s = set("Blue")
>>> print('o' in s)
False
>>> print('l' in s)
True

セットを反復処理する

for ループを使用してセットを反復処理できます。

for i in set("Blue"):
    print(i)

結果:

B
l
u
e

Python Set 組み込み関数

以下は、セットでさまざまなタスクを実行するために使用できる組み込み関数の一部です。

 関数  説明
 all()  セットのすべての要素が True の場合、True を返します。また、セットが空の場合は True を返します。
 any()  セットの要素のいずれかが True の場合、True を返します。セットが空の場合、False を返します。
 enumerate()  セットのすべての要素のインデックスと値をタプルとして返します。enumerate オブジェクトを返します。
 len()  セット内のアイテムの数またはセットの長さを返します。
 set()  セットを定義します。
 max()  セット内の最大アイテムを返します。
 min()  セット内の最小アイテムを返します。
 sorted()  セットの要素のソートされたリストを返します。
 sum()  セットのすべての要素の合計を返します。

Python 凍結セット

Frozenset は、一度割り当てられた要素を更新できない特別なセットです。凍結セットは不変のセットです。

セットは可変であるため、辞書でキーとして使用することはできませんが、固定セットは不変なので、固定セットを辞書キーとして使用できます。

frozenset は、frozenset() メソッドを使用して作成できます。

以下は、frozenset でサポートされているメソッドの一部です。

  • copy()
  • difference()
  • intersection()
  • isdisjoint()
  • issubset()
  • issuperset()
  • symmetric_difference()
  • union()
>>> x = frozenset([2,6,3,9])
>>> y = frozenset([6,1,2,4])
>>> x.difference(y)
frozenset({9, 3})
comments powered by Disqus