pythonのリスト内包表記

「エキスパートPythonプログラミング」でリスト内包表記の利用が推奨されていたのでちょっと実験。

size = 100000

# code1 (whileを使った書き方)
L1 = []
i = 0
while i < size:
    if i % 2 == 0 and i != 4:
        L1.append(i)
    i += 1

# code2 (forを使った書き方)
L2 = []
for i in range(size):
    if i % 2 == 0 and i != 4:
        L2.append(i)

# code3 (リスト内包表記を使った書き方)
L3 = [i for i in range(size) if i % 2 == 0 and i != 4]

それぞれの書き方で実行時間を計測すると

code1: 0.331 sec
code2: 0.227 sec
code3: 0.197 sec

確かにリスト内包表記を使った方が速い。
ただ、この場合でcode1みたいな書き方はあまりしない気がする。