pythonリストを使用する最適なスキーム

1713 ワード

Pythonプログラムをよく書いている人は、リストが一番高いデータ構造を使っているはずです。リストを使っているうちに、リスト方式はいろいろありますが、どれが一番性能がいいですか?多くの人がこの問題に関心を持っていないかもしれません。1000要素のリストを生成すると仮定します。次のどのような方法で生成するのが一番いいですか?
1、接続方式

def gen_list1():  
  l = []  
  for i in range(1000):    
    l = l + [i]
2、アプリの方法

def gen_list2():  
  l = []  
  for i in range(1000):    
    l.append(i)
3、リスト式

def gen_list3():  
  l = [i for i in range(1000)]
4、ランク関数

def gen_list4():  
  l = list(range(1000))
以上の4つの方法で、1つは1000の要素のリストがあります。どのような方法が一番時間がかかるかを知るために、私たちはテストをしなければなりません。テスト時間はTimerメソッドを使って、具体的なテストコードを作成します。

from timeit import Timer

t1 = Timer("gen_list1()", "from __main__ import gen_list1")
print("    :", t1.timeit(number=1000), "ms")

t2 = Timer("gen_list2()", "from __main__ import gen_list2")
print("append  :", t2.timeit(number=1000), "ms")

t3 = Timer("gen_list3()", "from __main__ import gen_list3")
print("     :", t3.timeit(number=1000), "ms")

t4 = Timer("gen_list4()", "from __main__ import gen_list4")
print("range  :", t4.timeit(number=1000), "ms")
テストプログラムの作成が完了したら、実行して結果を見てください。
接続先:  1.2728083460242487 ms
apped方法:0.0177053999962291 ms
リスト表式:0.039951618004561 ms
range関数:0.016114244 00471151 ms
テストによって、レンゲ関数を使って1000の要素リストを生成すると、最も時間がかかります。高性能Pythonプログラムを書き出すには、分析プログラムの性能を身につける方法と各データ構造を熟知することが重要です。
以上はpython使用リストの最適な方案の詳細です。pythonリストに関する資料は他の関連記事に注目してください。