Python チュートリアル - データ型セット
- Python セットを作成する
- Python Set Update
- Python セットから要素を削除する
- Python セット操作
- Python セットメソッド
- その他の Python セット操作
- Python Set 組み込み関数
- 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 セット操作
union
、intersection
、difference
、symmetric_difference
などの操作を実行できます。
2つのセット x
と y
があるとします:
>>> 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})