
集合内包表記の動作
集合内包表記(略して
setcomp
)では、リスト内包表記構文によく似た構造を使って
1
行で
新しい集合を作成できます。
リスト内包表記は
[]
で囲みましたが、集合内包表記は
{}
で囲む点が異なります。辞書
内包表記も
{}
で囲むので、混乱するかもしれません(
Python
のコア開発者たちは、なぜこ
のように決めたのか不思議ですよね)。
集合リテラルは、辞書リテラルと同様に
{}
で囲みます。この両者の違いは、辞書で区切
り文字として使われるコロンがあるかないかです。集合ではコロンには何も意味がありま
せん。
{}
で囲まれた内包表記が辞書内包表記か集合内包表記なのか判断する際も、コロン
を探してください。コロンがあれば、辞書内包表記です。コロンがなければ、集合内包表記
です。
簡単な集合内包表記の例を次に示します(この例は
2
章と
3
章で登場しました)。文字の集
合(
vowels
)と文字列(
message
)がある場合、下の
for
ループとそれと同等の集合内包
表記は同じ結果(
message
の母音の集合)を作成します。
このコードを
>>>
プロンプトで試してみてください。リスト内包表記と辞書内包表記で
何ができるかはすでにわかっているので、集合内包表記を理解するのはそれほど難しくな
いでしょう。
vowels = {'a', 'e', 'i', 'o', 'u'}
message = "Don't forget to pack your towel."
found = set()
for v in vowels: ...