torinaブログ

DjangoとBootstrap4で作成したブログ
Python, Django, Kivy, Bootstrap, Apache等のメモです
ソースコード

Python、リスト内包表記のパフォーマンス

Python Python言語仕様
約448日前 2015年12月7日12:29
ある本の写し
size=10
L=[]
i=0
while i  < size:
    if i % 2 == 0 and i != 4:
        L.append(i)
    i += 1

Pyrhonでは、以下の理由で遅い
・リストを操作するコードをループ毎にインタプリタ上で処理する
・カウンタの操作もループ毎にインタプリタ上で処理する

こうかくべき
[i for i in range(10) if i %2 ==0 and i != 4]


リストに要素をappendする場合、インタプリタは
リストからappend属性を取り出して関数として呼び出す
という処理をする

内包表記だとインタプリタに直接、リストに要素を追加する処理をさせれる

よって、
・インタプリタが解釈する命令が減る
・属性の取りだしが不用
・関数呼び出しが不用
の3つの理由で、内包表記が速い