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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 276, today: 1, yesterday: 1
初版日時: 2016-12-25 (日) 19:25:19
最終更新: 2017-01-01 (日) 15:42:27 (JST) (321d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF