ループまわすのと内包表現と numpy.array
ちょっとしたテスト
import numpy import time def test0(n): """空""" t1=time.time() t2=time.time() print t2-t1 def test1(n): """内包表現""" t1=time.time() a=[ x for x in range(n) ] t2=time.time() print t2-t1 def test2(n): """append""" t1=time.time() a = [] for x in range(n): a.append(x) t2=time.time() print t2-t1 def test3(n): """numpy.arange""" t1=time.time() a=numpy.arange(0,n,1) t2=time.time() print t2-t1 def do(n): """テストプログラム""" test0(n) test1(n) test2(n) test3(n) test0(n) test3(n) test2(n) test1(n) test0(n) if __name__=="__main__": do(int(1e7))
もちろん numpy は速いけど,ループまわすより内包表現の方が早い.以下が出力結果.秒単位.python を書くときは出来るだけループを使わないで書かないと.
9.53674316406e-07 # 空 1.25220108032 # 内包表現 2.4286031723 # ループまわして append 0.0782718658447 # numpy.arange 1.90734863281e-06 空 0.0778160095215 # numpy.arange 2.43482279778 # ループまわして append 1.27957415581 # 内包表現 0.0 # 空