Ad

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​/リストの検索と変換」を参照してください。


Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1828, today: 1, yesterday: 0
Princeps date: 2016-12-25 (Sun) 10:25:19
Last-modified: 2017-01-01 (Sun) 06:42:27 (JST) (2456d) by njf
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF