Pythonで新しい空のリストを作成するための最良の方法は何ですか?
l = []
または
l = list()
私はこれを2つの理由で尋ねています:
どのコードが速いかをテストする方法は次のとおりです。
% 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()
を好む人もいます。
list()
は本質的に[]
より遅いです。
シンボルルックアップがあります(あなたが他の何かになるようにリストを再定義しなかったかどうかをPythonが前もって知ることはできません!)
関数呼び出しがあります、
それからそれは渡された反復可能な引数があったかどうかをチェックする必要があります(それはそれから要素を持つリストを作成することができます)ps。私たちの場合はありませんが「if」チェックがあります
ほとんどの場合、速度の違いは実用的な違いはありません。
私は[]
を使います。
私は実際にはそれについて知りませんが、経験上、jpcgtが実際に正しいということは私には思えます。次の例:次のコードを使用すると
t = [] # implicit instantiation
t = t.append(1)
インタプリタでは、tを呼び出すと、リストがなくても "t"だけが返されます。
t = t.append(2)
「NoneTypeオブジェクトには属性appendがありません」というエラーが表示されます。しかしながら、もし私がリストを作成するならば
t = list() # explicit instantiation
それからそれはうまくいきます。