はじめに
リスト内包表記は簡潔に記載できるが、どちらを使った方が良いのか。速度の面で比較しました。
プログラムは、オイラリー・ジャパンの「入門Python3」を参考にしています。
timeitを使用した時間の比較
python
from timeit import timeit
def make_list_1():
result = []
for value in range(1000):
result.append(value)
return result
def make_list_2():
result = [value for value in range(1000)]
return result
print('make_list_1 の所要時間 ', timeit(make_list_1, number = 1000),'秒')
print('make_list_2 の所要時間 ', timeit(make_list_2, number = 1000),'秒')
# make_list_1 の所要時間 0.05835742875933647 秒
# make_list_2 の所要時間 0.03010526718571782 秒
timeitとは
与えられた文、setup コードおよび timer 関数で Timer インスタンスを作成し、その timeit() メソッドを number 回実行します。
詳しい説明は、こちらのサイトが分かりやすいです。
結びに
「入門Python3」では、appendのほうがリスト内包表記の2倍以上時間がかかっているように記載されていますが、今回はそこまで差が出ませんでした。
実際の環境で確認することも大事ですね。