内包表記

Pythonのリストの書き方に内包表記というものがあります。

まず書き方を覚えてください。
[ 要素 for i in (リスト) ]
というように書きます。もしif文を挟ませたかったら
[ 要素 for i in (リスト) if (条件) ]
このように最後にif条件文を記します。
elseやfor二重の文なども書けますが、それくらい複雑になってくると普通に書く方が良いのではと思います。


内包表記のメリットは2つあります。
1つ目は行数が減らせる、ということ。Pythonはもともと短く書ける言語です。でもこの内包表記を使えばさらに短く書けます。
2つ目は実行速度が速くなる、ということ。これは膨大な処理をさせるプログラムを書くようになるとありがたみを実感してくる部分ですが、とても簡単にできる高速化の工夫の1つです。


では、内包表記の 2つのメリットを感じてもらうために以下のサンプルスクリプトを見比べてください。

2つのスクリプトは、100000000までの整数を要素に持つリストを作って、適当にそのうちの1つを表示させているだけのものです。
通常の書き方では4行かかっているところ、内包表記では1行で書けているのがわかりますね。大規模なプログラムになると大量のリストを扱うようになります。1つのリストにかける行数が少なくなるとプログラム全体も見やすくなって良いですね。

では、処理速度の方はどうでしょうか?
2つのスクリプトの実行速度を何回か計測してその平均を取ってみたところ、通常の書き方では26秒程かかるところ、内包表記だと15秒程で完了していました(実行環境に大きく依存)。手軽に約4割も短縮できました。
余談ですが、これだけ差が生まれる一番の要因は、通常の書き方だと append メソッドを毎回呼び出すのに時間がかかっているから、です。


ということで、内包表記の魅力、お分かりいただけたでしょうか。


Pythonの記事一覧へは こちら から。