Pythonのsetでソート 集合の操作や演算するサンプル

Pythonのsetで集合を扱うサンプルコード

Pythonのset

Pythonで集合を使うと、以下のようなケースで便利です。

  • 複数のデータをまとめて管理したい場合
  • 重複したデータを取り除きたい場合
  • 集合演算(和集合、積集合、差集合など)を行いたい場合
  • 組み込み関数を使って簡単にデータ操作を行いたい場合

Pythonのsetの初期化

Pythonでset型オブジェクトを初期化するには以下のようにします。空のオブジェクトはset()で生成できます。初期値を指定することも可能。

# 集合の初期化のサンプルコード
s = set()
print(s) # 結果:set()

# 1~10までの値で初期化
s = set(range(1, 11))
print(s) # 結果:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Pythonのsetの集合内包表記

Pythonのsetの集合内包表記とは、setを構築するための表記法の一種で、普通の集合内包表記と同様に、特定の条件を満たす要素からなる集合を作成することを可能にします。set内包表記を使用すると、任意のイテレータオブジェクトからsetを作成することが可能になります。

{i for i in range(1, 11)}

Pythonのsetの要素数取得、要素の追加、修正、削除

Pythonのsetでは、要素を格納したり、重複をなくしたり、要素を参照したり、要素を検索したり、要素を削除したり、要素をソートしたり、集合演算を行ったりすることができます。

# 要素数取得
my_set = {1, 2, 3}
print(len(my_set))

# 要素追加
my_set.add(4)
print(my_set)

# 要素修正
my_set.update([5, 6])
print(my_set)

# 要素削除
my_set.remove(1)
print(my_set)

要素を検索するには、inを使います。

# サンプルコード

# 要素を定義
my_set = {1, 3, 5, 7, 9}

# 要素の検索
if 7 in my_set:
print("7 は存在しています")
else:
print("7 は存在していません")

setオブジェクトの要素の順番は保証されていません。要素のソートを行うには、sortedを使用します。

#サンプルコード
set_data = set([5, 3, 9, 1])

#ソート
set_data = sorted(set_data)

print(set_data) # [1, 3, 5, 9]

関連)Pythonのクイックソートのサンプルコード

Pythonのsetで和集合、積集合、差集合、対象差集合を使う

和集合:
和集合は、2つの集合AとBにおいて、AとBの全ての要素を含む集合を表します。和集合は、A ∪ B のように表記されます。

積集合:
積集合は、2つの集合AとBにおいて、AとBの共通の要素を含む集合を表します。積集合は、A ∩ B のように表記されます。

差集合:
差集合は、2つの集合AとBにおいて、AにあってBにない要素を含む集合を表します。差集合は、A – B のように表記されます。

対象差集合:
対象差集合は、2つの集合AとBにおいて、AとBの両方にある要素を含む集合を表します。対象差集合は、A B のように表記されます。

# 和集合
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
s3 = s1.union(s2)
print(s3) # {1, 2, 3, 4, 5, 6}

# 積集合
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
s3 = s1.intersection(s2)
print(s3) # {3, 4}

# 差集合
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
s3 = s1.difference(s2)
print(s3) # {1, 2}

# 対象差集合
s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])
s3 = s1.symmetric_difference(s2)

Pythonのsetで部分集合と上位集合の判定

Pythonで部分集合を判定するには、issubset()メソッドを使用します。issubset()メソッドは、指定した集合が他の集合の部分集合であるかどうかを判定します。

Pythonで上位集合を判定するには、issuperset()メソッドを使用します。issuperset()メソッドは、指定した集合が他の集合の上位集合であるかどうかを判定します。

# 部分集合の判定
A = {1, 2, 3, 4, 5}
B = {3, 4, 5, 6, 7}

if A.issubset(B):
print("AはBの部分集合です")
else:
print("AはBの部分集合ではありません")

# 上位集合の判定
A = {1, 2, 3, 4, 5}
B = {3, 4, 5, 6, 7}

if A.issuperset(B):
print("AはBの上位集合です")
else:
print("AはBの上位集合ではありません")

Pythonのsetで互いに素の判定

Pythonのsetの集合が互いに素とは、それぞれの集合の要素が他の集合の要素と共通していないことを意味します。つまり、集合Aと集合Bが互いに素である場合、Aの要素がBに存在していないかぎり、Bの要素がAに存在していないということです。

# 例:A = {1, 2, 3}、B = {3, 4, 5}

A = {1, 2, 3}
B = {3, 4, 5}

if A & B == set():
print('互いに素です')
else:
print('互いに素ではありません')

Pythonのsetのまとめ

  • setは重複した要素を持たない集合である。
  • set内の要素の順序は保証されない。
  • set内の要素は、リストやタプルなどのイテラブルなオブジェクトから作成できる。