【Python基礎】Set型:重複を含まないデータ

  • URLをコピーしました!
目次

Set型

前回、Pythonのリストの集合計算を勉強しました。

その中でSet型が出てきました(というよりはむしろ集合計算はSet型で行うもののようです)ので、せっかくならSet型もついでに勉強してみましょう。

ということで始めていきましょう。

Set型とは?

まずはSet型の特徴を踏まえながら、Set型とは何だろうかと見ていきましょう。

Set型の特徴としては「重複を許さない」こと、そして「順番がない」ことが挙げられます。

まず「重複を許さない」ことを見ていきましょう。

Set型を作成するには「{}(波括弧)」で要素を括ります。

例えばこんな感じ。

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

先ほど重複を許さないと言っておきながら、重複を含んでいます。

とりあえず「A」をprint関数で表示させてみましょう。

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

print(A)

実行結果
{1, 2, 3, 4, 5}

重複していた最後の「1, 3, 5」は消えて、「1, 2, 3, 4, 5」だけになりました。

これがSet型の1番の特徴です。

このSet型ですが、直接作成する他にリストから変換することもできます。

その場合は「set(リスト型のデータ)」で変換できます。

B = [1, 2, 3, 4, 5, 1, 3, 5]
C = set(B)

print(B)
print(C)

実行結果
[1, 2, 3, 4, 5, 1, 3, 5]
{1, 2, 3, 4, 5}

この場合「B」はリスト型なので重複を含んでいますが、「B」をSet型にした「C」には重複が含まれていません。

次にもう一つの特徴の「順番がない」ことを見てみましょう。

D = [1, 2, 3, 4, 5, 1, 3, 5]

print(D[1])

E = set(D)

print(E[1])

実行結果
2
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [19], in <cell line: 7>()
      3 print(D[1])
      5 E = set(D)
----> 7 print(E[1])

TypeError: 'set' object is not subscriptable

「D」というリストを作り、「D[1])」とすると2番目の要素を取得することができます。

ですがその「D」をセット型に変換した「E」を使って「E[1]」として要素を取得しようとした場合、エラーとなります。

Set型の要素の取得方法

Set型の要素の取得方法は2つ、「リスト型に変換」する方法と「for関数で順番に取得」する方法です。

まずは「リスト型に変換」する方法を見てみましょう。

先ほどの「set(リスト型のデータ)」とは逆で「list(Set型のデータ)」です。

F = {1, 2, 3, 4, 5, 1, 3, 5}

print(F)
G = list(F)
print(G[1])

実行結果
{1, 2, 3, 4, 5}
2

次に「for関数で順番に取得」する方法です。

H = {1, 2, 3, 4, 5, 1, 3, 5}

for i in H:
    print(i)

実行結果
1
2
3
4
5

Set型は順番がないはずなのにfor関数で順番に取得できるというのはちょっと驚きでした。

Set型の要素の追加と削除

Set型の要素の追加は「.add(追加する要素)」です。

J = {1, 2, 3, 4, 5, 1, 3, 5}

J.add(6)
print(J)

実行結果
{1, 2, 3, 4, 5, 6}

削除する方法は「.remove(削除する要素)」と「.discard(削除する要素)」の2種類があります。

K = {1, 2, 3, 4, 5, 1, 3, 5}

K.remove(5)
print(K)

L = {1, 2, 3, 4, 5, 1, 3, 5}

L.discard(5)
print(L)

実行結果
{1, 2, 3, 4}
{1, 2, 3, 4}

どちらも同じに見えますが、「.remove(削除する要素)」では削除する要素がないとエラーになりますが、「.discard(削除する要素)」ではエラーになりません。

M = {1, 2, 3, 4, 5, 1, 3, 5}

M.remove(7)
print(M)

実行結果
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Input In [25], in <cell line: 3>()
      1 M = {1, 2, 3, 4, 5, 1, 3, 5}
----> 3 M.remove(7)
      4 print(M)

KeyError: 7
N = {1, 2, 3, 4, 5, 1, 3, 5}

N.discard(7)
print(N)

実行結果
{1, 2, 3, 4, 5}

ということで今回はSet型をみてきました。

今回の基礎的な部分を見ているとそれほど使う感じはしないのですが、前回の集合計算に関してはSet型を使うのに大きなメリットがありますので、覚えておくといいかなと思いました。

次回はPythonの基礎としてsplit関数を見ていきましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次