Python Set

このチュートリアルでは、Pythonのセットについて学びます。前の記事ではPythonの文字列について学びました。 こちらから学ぶことができます。

Pythonのセット

Pythonのセットは、重複のない要素の無秩序なコレクションです。リストがあり、リストのユニークなアイテムのみが必要な場合、Pythonのセットを使用することができます。同様に、入力からユニークなアイテムのみが必要な場合、Pythonのセットを使用することができます。アイテムを追加または削除することができます。要素を波括弧で囲んでセットを初期化することができます。他のシーケンスと同様に、1つのセットには複数のデータ型の要素が含まれている場合があります。さらに、set()関数を使用してリストからセットを作成することもできます。次の例では、セットの初期化についてのアイデアを示します。

#単一のデータ型を含むセット
set1 = {1, 2, 3, 4, 2, 3, 1}
print(set1)

#複数のデータ型を含むセット
set2 = {1, 2, 3, (1, 2, 3), 2.45, "Python", 2, 3}
print(set2)

#リストからセットを作成
theList = [1, 2, 3, 4, 2, 3, 1]
theSet = set(theList)
print(theSet)

出力は次のようになります。

================== RESTART: /home/imtiaz/set1.py ==================
set([1, 2, 3, 4])
set([1, 2, 3, 2.45, 'Python', (1, 2, 3)])
set([1, 2, 3, 4])
>>> 

Pythonのセットに要素を追加する

前の例では、Pythonセットを直接初期化する方法を学びました。セットに要素を追加する必要があるとします。その場合、add() 関数を使用して行うことができます。ただし、この関数は単一の要素しか追加できません。リストやセットなどの反復可能な要素を追加したい場合は、update() 関数を使用して行うことができます。次の例を見てもらうと、理解が深まるでしょう。

 #空のセットを初期化する
theSet = set()

 #add() 関数を使用して単一の要素を追加する
theSet.add(1)
theSet.add(2)
theSet.add(3)
theSet.add(2)
 #別のデータ型を追加する
theSet.add('hello')

 #update() 関数を使用して反復可能な要素を追加する
theSet.update([1,2,4,'hello','world']) #list as iterable element
theSet.update({1,2,5}) #set as iterable element
print(theSet)

以下のコードの出力は次のとおりです。

================== RESTART: /home/imtiaz/set_new.py ==================
set([1, 2, 3, 4, 5, 'world', 'hello'])
>>> 

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

Pythonセットから要素を削除するための2つの関数があります。1つはremove()で、もう1つはdiscard()です。削除しようとしている要素がセットにない場合、remove() 関数は例外を発生させます。一方、discard() 関数は何もしません。以下のコードを見るとわかります。

theSet = {1,2,3,4,5,6}

 #discard() 関数を使用して3を削除する
theSet.discard(3)
print(theSet)

 #再度 discard() 関数を呼び出して3を削除する
theSet.discard(3) #This won't raise any exception
print(theSet)

 #5を削除するために remove() 関数を呼び出す
theSet.remove(5)
print(theSet)

 #5を削除するために remove() 関数を呼び出す again
theSet.remove(5) #this would raise exception
print(theSet) #this won't be printed

出力は次のようになります。

================== RESTART: /home/imtiaz/set_del.py ==================
set([1, 2, 4, 5, 6])
set([1, 2, 4, 5, 6])
set([1, 2, 4, 6])

Traceback (most recent call last):
  File "/home/imtiaz/set_del.py", line 16, in 
    theSet.remove(5) #this would raise exception
KeyError: 5
>>> 

Pythonのセット操作

数学的な集合演算についてはおそらくご存知かもしれませんが、和集合、積集合、差集合などがあります。Pythonのセットを使用してこれらの操作を行うこともできます。今回はその方法を学びましょう。

Pythonのセット和集合

和集合は、二つのセットをマージする操作です。つまり、和集合は二つのセットのすべてのユニークな要素を含む別のセットを作成します。例えば、{1, 2, 3, 4} と {2, 3, 5, 7} という二つのセットがある場合、これらに和集合操作を行うと {1, 2, 3, 4, 5, 7} が得られます。これはunion() 関数を使用して得ることができます。

Pythonのセット積集合

再び、積集合は二つのセットの共通のユニークな要素を取得する操作です。例えば、{1, 2, 3, 4} と {2, 3, 5, 7} という二つのセットがある場合、これらを積集合すると {2, 3} が得られます。積集合の操作はintersection() 関数で行います。

Python Set Difference

今、差分操作は2つのセットを比較し、セットAにあってセットBに共通でない項目を含む新しいセットを作成します。例えば、セットA = {1, 2, 3, 4} とセットB = {2, 3, 5, 7}があるとします。その場合、A – Bの操作は{1, 4}を生成します。さらに、B – Aは{5, 7}を生成します。差分操作はdifference()関数によって行われます… 以下のコードは、Pythonプログラミングでこれらのセット操作を行う方法についてのアイデアを提供します。

A = {1, 2, 3, 4} #initializing set A
B = {2, 3, 5, 7} #initializing set B

union_operation = A.union(B)

print("A union B :")
print(union_operation)

intersection_operation = A.intersection(B)

print("A intersection B :")
print(intersection_operation)

difference_operation = A.difference(B)

print("A-B :")
print(difference_operation)

difference_operation = B.difference(A)
print("B-A :")
print(difference_operation)

取得する出力は次のようになります

================== RESTART: /home/imtiaz/set_op.py ==================
A union B :
set([1, 2, 3, 4, 5, 7])
A intersection B :
set([2, 3])
A-B :
set([1, 4])
B-A :
set([5, 7])
>>> 

それでは、今日はこれで全てです。Pythonセットについてよく学んでいただけたことを願っています。さらなる疑問があれば、コメントボックスにお問い合わせください。私たちはお答えします。参考文献:公式ドキュメント

Source:
https://www.digitalocean.com/community/tutorials/python-set