Pythonには「内包表記」という独特の記法があります。
他の言語には少ない書き方で、しかも結構便利なのでこれをよく使うようになるとPython使いこなし始めたような気になります。もちろん、気のせいですが。
内包というくらいなので、リストや辞書オブジェクトなどの中で使います。例えば、
li = [ x*2 for x in range(10)]
とするとliは
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
となります。 つまりリストなどのカッコの中に、最初に値、続いてループのルールを書くとそのルールにのっとって作成された要素のリストなどができるという記法です。
これを内包表記を使わずに書くと、
li = [] for x in range(10): li.append(x*2)
となります。
一般に内包表記のほうが処理速度は速いと言われています。 また、記法もコンパクトになり、ちょっとした処理には便利です。
また「if」を用いて条件を指定することも可能です。
li = [ x*2 for x in range(10) if x < 2] print li
結果
[0, 2]
高速化や記法の簡略化といったメリットのある一方で、複雑な処理を書くのは難しく読みづらくなりやすいです。また特にPythonに不慣れな人には一見して何が書いてあるか良くわからず、Pythonの良さである読みやすさがなくなるのではという意見もあります。
Pythonにはリストの検索や変換を行う、mapやfilterなどの関数もあり、処理は遅くなりますがそちらを使った方が見やすくなることもあります。それらについては「Python/リストの検索と変換」を参照してください。
ぺージ情報 | |
---|---|
ぺージ名 : | Python/内包表記 |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
Counter: 1944,
today: 1,
yesterday: 1
初版日時: 2016-12-25 (日) 10:25:19
最終更新: 2017-01-01 (日) 06:42:27 (JST) (2634d) by njf