Pythonのリスト内包表記と単純ループ
最近、Pythonでの開発をしていてテクニックのようなことを勉強したいと思い
- 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2010/05/28
- メディア: 大型本
- 購入: 33人 クリック: 791回
- この商品を含むブログ (92件) を見る
を読んでいます。
この本の中で、リスト内包表記の話がありました。
どうやら
for i in range(100): a.append(i)
のような単純ループよりも
a = [i for i in range(100)]
のようなリスト内包表記の方が速いらしいです。
検証
本当に速いのか、確かめてみました。
単純ループ
import time start = time.time() a = [] for i in range(100): a.append(i) print time.time() - start, print " [sec]"
のコードと
リスト内包表記
import time start = time.time() a = [] a = [i for i in range(100)] print time.time() - start, print " [sec]"
のコード、どちらが速いのか。 range()の中の数字を少しずつ増やして調べてみました。
結果は以下の図になりました。横軸がループ回数で、縦軸が処理時間[秒]です。
リスト内包表記の方が少し速いですね。
少しずつ書くようにしてみようと思います。