【Python】セットの作成方法を複数紹介!

  • 2020年5月29日
  • 2020年5月29日
  • Python

こんにちは!

皆さんは、セットという概念をご存知ですか?

Python初心者
集合のことかな?ド・モルガンは知ってる!
先パイ
知ってて当然じゃぞ

セットは集合演算などでよく使われるとても重要な概念です。

今回の記事では、以下の内容について紹介します。

  • セット(集合)とは
  • セットを{}で作成する方法
  • セットをset()で作成する方法
  • セットをfrozenset()で作成する方法

セットとは何か

セットは「Pythonで集合を扱う」ためのものです。

集合はあるひとまとまりの集まりのことで、そのまとまりに属するものを要素と呼びます。

つまり、集合は要素の集まりということです。

皆さんなら以下のような図を見たことがありますよね。

このような図は、ベン図と呼ばれており、集合を図示する際によく用いられます。

セットの作成方法

{}で作成する方法

セットは基本的に「{}」で表されます。

そのため{}で要素を囲むことでセットを作成することができます。

以下のプログラムは、セットを作成するプログラムです。

setA = {"A", "B", "C"}

print(setA)

実行結果

{'A', 'C', 'B'}

set()で作成する方法

「set()」を使うことで、セットを作成することができます。

set()を使う利点は、連番のセットを作ったり、リストや文字列などをセットに変換できる点です。

また、リスト等からセットを作成することによって重複が省かれたセットになるため、重複を省くという利点もあります。

以下のプログラムは、set()で様々なセットを作成するプログラムです。

setB = set(range(0, 10, 2))

list = ["1", "2", "3", "2", "3"]
setC = set(list)

setD = set()

print(setB)
print(setC)
print(setD)

解説

setB = set(range(0, 10, 2))
0~9の間で1つ飛ばしの要素でセットを作成します。
list = [“1”, “2”, “3”, “2”, “3”]
setC = set(list)
リストからセットを作成します。重複は省かれて作成されます。
setD = set()
空のセットを作成します。空のセットをprint()で表示すると、「set()」と表示されます。

実行結果

{0, 2, 4, 6, 8}
{'3', '1', '2'}
set()
リストからセットを作成する際には順番は保持できません。

先ほどのプログラムの実行結果の2行目を見ても、順番がバラバラになっていることがわかります。

集合では、順番に意味を持たないため、順番を保持しない仕様になっています。

frozenset()で作成

「frozenset()」を使うと、変更不可のセットを作成することができます。

以下のプログラムは、frozenset()を使ってセットを作成するプログラムです。

setE = frozenset(["A", "B", "C"])

print(setE)

setE.add("D")

解説

setE.add(“D”)
setEはfrozenset型のセットで変更不可なため、エラーが発生します。

実行結果

frozenset({'B', 'C', 'A'})
Traceback (most recent call last):
  File "set_test3.py", line 5, in <module>
    setE.add("D")
AttributeError: 'frozenset' object has no attribute 'add'

要素を変更することがないセットは、frozenset()を使って作成することでプログラムの信頼性が高まります。

まとめ

今回の記事では、以下の内容を紹介しました。

  • セットとは
    →Pythonでの集合のこと
  • セットを{}で作成する方法
    {}で要素を囲む
  • セットをset()で作成する方法
    →{}で要素を囲むより柔軟に作成可能
  • セットをfrozenset()で作成する方法
    変更不可のセットを作成可能
Python初心者
セットの作り方っていっぱいあるんだね!

セットの作成方法を覚えて、セットを扱えるようになりましょう!