Pythonで集合を作成するには波かっこやset関数や内包表記を使う。それらの方法と注意点を簡単に紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
# 波かっこを使って集合を作成
s = {0, 1, 2} # 波かっこ内に集合の要素を記述
print(s) # {0, 1, 2}
# 集合の要素は重複しない
s = {0, 0, 1, 2}
print(s) # {0, 1, 2}
# 集合の要素には順序がない
s = {'foo', 'bar', 'baz'}
print(s) # {'foo', 'baz', 'bar'}など
# 集合の要素はハッシュ可能である必要がある
s = {[0, 1], [2, 3]} # TypeError
# set関数を使って集合を作成
s = set() # 空の集合
print(s) # set()
d = {} # {}は空の集合ではなく、空の辞書を作成する
print(s == d) # False
print(type(d)) # <class 'dict'>
s = set(['foo', 'bar', 'baz']) # 集合の要素を含む反復可能オブジェクトを与える
print(s) # {'foo', 'baz', 'bar'}
s = set('foo') # 文字列は反復可能オブジェクト
print(s) # {'f', 'o'}
# 集合内包表記
s = {x * 2 for x in range(4)}
print(s) # {0, 2, 4, 6}
集合を作成するには幾つかの方法がある。
以下ではこれらの方法を見ていこう。
集合を作成する最も簡単な方法は波かっこの内部に、その要素をカンマ区切りで並べていくことだ。以下に例を示す。
s = {0, 1, 2} # 波かっこ内に集合の要素を記述
print(s) # {0, 1, 2}
この例では集合の要素となる3つの整数値をカンマ区切りで並べている。注意したいのは、集合では同一の要素が重複することがない点だ。以下に例を示す。
s = {0, 0, 1, 2}
print(s) # {0, 1, 2}
ここでは、整数値「0」を2つ波かっこの中に記述しているが、同一の要素が重複することがないので、整数値「0」は集合sには1つだけ存在するようになる。
また、集合の要素には順序もない。集合の要素を取り出そうというときにどんな順番でそれらが出現するかは分からない。例えば、以下の集合sは「{'foo', 'bar', 'baz'}」という順番で要素を並べているが、print関数でその内容を表示したときに作成時とは異なる順番で要素が表示されるかもしれない(し、作成時と同じ順番で表示されるかもしれない)。
s = {'foo', 'bar', 'baz'}
print(s) # {'foo', 'baz', 'bar'}など
最後に集合の要素はハッシュ可能である必要がある。文字列や数値はハッシュ可能だが、リストは変更可能でありハッシュ可能ではない。そのため、リストを集合の要素とすることはできない。
以下に例を示す。
s = {[0, 1], [2, 3]} # TypeError
リストを集合の要素としようとすると、TypeError例外が発生する。
Copyright© Digital Advantage Corp. All Rights Reserved.