Python: セット(集合)を作成する方法

Pythonでセット(集合)を作成する方法を紹介します。

セット(集合)もリストやタプルと同じように複数のデータを 一つにまとめるデータ型です。 ただし「重複した要素を持たない」のがセットの特徴です。 さらに添字やキーという概念は無く値のみなので、 特定の要素を参照する方法がありません。

セットを作成する場合はディクショナリ(辞書)と同じく波括弧{}を使います。

書式
セット名 = {値1, 値2, 値3}

セットの具体的な作成例は次の通りです。
2つ目の s2のように文字列と数値を混在させることもできますが、 通常は混在させません。

s1 = {"a", "b", "c", "d"}

s2 = {"a", 1, "b", 2}

要素が重複している場合

セットを作成する際に要素が重複している場合は、 重複要素が自動的に取り除かれます。

次のコードは作成する際に"a"が重複していますが、 自動的に取り除かれ {"a", "b", "c"} のセットとなっています。

s = {"a", "b", "c", "a"}

print(s)  # {'a', 'b', 'c'}

空のセットを作成する

空のセットを作成する場合、 波括弧を使って「{}」と記述するとdict型と見なされます。 空のセットは set()コンストラクタを使います。

d = {}

print(type(d)) # <class 'dict'>

# 空のセット
s = set()

print(type(s)) # <class 'set'>

セットの要素数が多い場合の記述方法

セットの要素数が多い場合、1行で無理やり書くと見にくくなります。 その場合は複数行にして書くことができます。

s = {"spring", "summer", 
	"autumn", "winter"}

print(len(s)) # 4

ディクショナリと同じように波括弧{}の中では\記号を付けることなく 改行できます。

set()で作成する

セットのコンストラクタset()を使って作成することもできます。

書式
set(イテラブルなオブジェクト)

引数はイテラブルなオブジェクトです。 set()の引数として単純に「"a", "b", "c", "d"」と指定してもエラーとなります。 "abcd"を指定した場合は{"a", "b", "c", "d"}のセットが作成されます。 ディクショナリを指定した場合はキー部分のセットとなります。

次のサンプルコードはset()を使った具体的なセット作成例です。 セットは順序が保証されないため、代入した時の順番と 表示する時の順番が異なる場合があります。

# エラーとなる記述方法
s1 = set("a", "b", "c", "d")  #エラー

# 文字列を指定
s2 = set("abcd")
print(s2)   # {'b', 'a', 'c', 'd'}

# リストを指定
s3 = set(["a", "b", "c", "d"])
print(s3)   # {'b', 'a', 'c', 'd'}

# ディクショナリを指定
d = {"a": 1, "b": 2, "c": 3, "d": 4}
s4 = set(d)
print(s4)   # {'b', 'a', 'c', 'd'}

s5 = set()
print(s5)  # set()
Python