ougarairin’s diary

技術的なことと読んだ本とV

集合内包表記

関数型プログラミングと内包表記のお話から発展したことのメモ 内包表記は集合を定義する記述の仕方の一つ

集合とは

集合とは, ものの集まりである. 数学的に記述する場合は

\displaystyle{
S = \{0, 1, 2, 3\}
}

のようになる.

Pythonの場合

S = {0, 1, 2, 3} # {0, 1, 2, 3}

のようになる.

ここで, 集合を構成する1つ1つのものを要素または元と呼ぶ.

このとき, xが集合Sの要素であることを

\displaystyle{
x \in S
}

xが集合Sの要素ではないことを

\displaystyle{
x \notin S
}

のように表記する.

Pythonの場合

 0 in S # True
 5 in S # False
 5 not in S # True

のようになる.

要素の並べ方

ここまで集合 S はすべての要素を記述してきた. このような要素の並べ方を集合の「外延的定義」と呼ばれる.

一方で

\displaystyle{
S=\{x| 0\leq x \leq 3 を満たす整数 \}
}

のように記述することもできる. このような要素の並べ方を集合の「内包的定義」と呼ばれる.

Pythonの場合

S = {x for x in range(0, 4)} # {0, 1, 2, 3}
S = {x for x in range(0, 10) if 0<= x <= 3} # {0, 1, 2, 3}

のようになる. 今回の例では, range() 関数で事足りているため, 2行目のような書き方をする必要はないが, 条件分岐を使用することで, 内包的定義のように記述することが出来る.