253

Pythonで新しい空のリストを作成する最良の方法は何ですか?

l = [] 

また

l = list()

私がこれを尋ねるのは、次の 2 つの理由からです。

  1. どちらが速いかという技術的な理由。(クラスを作成するとオーバーヘッドが発生しますか?)
  2. コードの読みやすさ - 標準的な規則はどれですか。
4

5 に答える 5

347

どのコードがより高速かをテストする方法は次のとおりです。

% python -mtimeit  "l=[]"
10000000 loops, best of 3: 0.0711 usec per loop

% python -mtimeit  "l=list()"
1000000 loops, best of 3: 0.297 usec per loop

ただし、実際には、この初期化はプログラムの非常に小さな部分である可能性が高いため、これについて心配するのはおそらく間違っています。

読みやすさは非常に主観的です。私は を好み[]ますが、Alex Martelli のような非常に知識のある人は、発音しlist()やすいのでを好みます。

于 2010-06-04T07:29:11.053 に答える
141

list()は本質的に よりも遅い[]ため、

  1. シンボル検索があります(リストを別のものに再定義しただけではない場合、pythonが事前に知る方法はありません!)、

  2. 関数呼び出しがあり、

  3. 次に、反復可能な引数が渡されたかどうかを確認する必要があります(そのため、そこから要素を含むリストを作成できます)ps。私たちの場合はありませんが、「if」チェックがあります

ただし、ほとんどの場合、速度の違いは実質的な違いにはなりません。

于 2010-06-04T07:59:11.073 に答える
18

私は使用します[]

  1. リスト表記が省略されているので速いです。
  2. アイテムを含むリスト作成することは、アイテムを含まないリストを作成することとほぼ同じに見えるはずですが、なぜ違いがあるのでしょうか?
于 2010-06-04T08:06:08.737 に答える