第2章. 包括でコレクションを作成する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
リスト内包表記は、リストを作成するための高レベルで宣言的な方法である。以下のようになる:
>>>squares=[n*nforninrange(6)]>>>(squares)[0, 1, 4, 9, 16, 25]
これは本質的に以下のことと等価性である:
>>>squares=[]>>>forninrange(6):...squares.append(n*n)>>>(squares)[0, 1, 4, 9, 16, 25]
最初の例では、あなたが入力するのはどのようなリストが欲しいかを宣言しているのに対して、2番目はそれをどのように作成するかを指定していることに注目してほしい。どのようなリストを作成したいかを宣言し、それをPythonがどのように作成するかを決定する。
Pythonではリスト以外にも内包表記を書くことができる。例えば、簡単な辞書内包を紹介しよう:
>>>blocks={n:"x"*nforninrange(5)}>>>(blocks){0: '', 1: 'x', 2: 'xx', 3: 'xxx', 4: 'xxxx'}
これは以下と等価性である:
>>>blocks=dict()>>>forninrange(5):...blocks[n]="x"*n>>>(blocks){0: '', 1: 'x', 2: 'xx', 3: 'xxx', 4: 'xxxx'}
内包の主な利点は、読みやすさと保守性である。初めて内包に出会う開発者であっても、その意味について最初に推測したことが正しいことを発見するのが普通だ。これ以上に読みやすいものはない。
また、より深い認知的利点もある。理解力を少し練習すれば、精神的な努力をほとんどせずに書き方の練習ができることに発見するだろう。
リストや辞書以外にも、この章で学ぶ内包表記がいくつかある。 それらに慣れてくると、それらが汎用的で非常にPython的であることが分かるだろう。つまり、それらは他の多くのPythonイディオムや構成要素にうまく適合し、あなたのコードに新たな表現力とエレガンスを与えてくれる。
リスト内包表記
リスト内包表記は、最も広く使われている種類の内包で、基本的にはリストを作成し、それを入力する方法である。 その構造は次のようなものだ:
[EXPRESSIONforVARIABLEinSEQUENCE]
EXPRESSION はPythonの任意の式であるが、有用な内包では式に変数が含まれていることが多い。その変数は、 フィールドに記述される。 は、変数が列挙するソース値を定義し、最終的な計算値のシーケンスを作成する。VARIABLE SEQUENCE
先程の簡単な例である:
>>>squares=[n*nforninrange(6)]>>>type(squares)<class 'list'>>>>(squares)[0, 1, 4, 9, 16, 25]
結果は単なる正規リストである。squares において、式はn*n であり、変数はn であり、ソースシーケンスはrange(6)
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access