Python~高速リスト作成(内包表記、Numpy)~
リストの作成
Pythonでは標準で用意されているListの作り方として、for文を使ってappendで順番に増やしていくやり方と内包表記があります。また、Numpyを用いてarange関数で作成する方法もあります。それぞれの速さを計測してみましょう
リスト作成の速さ
それでは早速コードを見ていきましょう。
# Numpy def genlist0(n,m): return np.arange(n,m) %timeit genlist0(1,10**7) # Python list def genlist1(n,m): ans = [] for i in range(n,m,1): ans.append(i) return ans %timeit genlist1(1,10**7) def genlist2(n,m): return [i for i in range(n,m,1)] %timeit genlist2(1,10**7)
比較として、1-10000000までの1ずつ増える配列の生成にかかる時間を比較します。
NumpyでのArangeによる生成、リストでAppendして生成、リストの内包表記での生成です。
結果は以下の通りです。
100 loops, best of 5: 17.7 ms per loop 1 loop, best of 5: 1.14 s per loop 1 loop, best of 5: 714 ms per loop
なんということでしょう。
Numpyは17.7msecなのに対して、リストのfor文による生成は1.14sec、高速といわれる内包表記ですら714msecかかっております。
以下にNumpyが速いかがわかりますね。
コメント
コメントを投稿