2012-08-02 10 views
5

可能性の重複:
Creating a list in Python- something sneaky going on?
Creating an empty list in Pythonマイリスト=リスト()マイリストVS = []パイソン

以下を考慮してください

mylist = list() 

と:

list()または[]を使用する利点はありますか?ある状況で他のものよりも使用する必要がありますか?

+2

私は '[]'リテラルが関数呼び出しを保存するので高速になると思う傾向がありますが、私は間違っていました。これを測定しようとしましたか? –

+1

@FrédéricHamidi - 私は前にSOの記事でこれを見てきたと確信しています。私はそれを見つけようとします... – mgilson

+0

私は測定を試みていない、私はすぐに試してみて、感謝フレデリック – Sherlock

答えて

16

空リストの場合は、[]を使用することをおすすめします。これは組み込みの名前listの名前ルックアップを避けるため、高速になります。ビルトイン名は、グローバル名またはローカル名で上書きすることもできます。これはではなく、list()にのみ影響します。

list()ビルトインはしかし、リストにいくつかの他のiterableに変換するために役立ちます。

完全性については
a = (1, 2, 3) 
b = list(a) 

、私のマシン上で空のリストには2つのオプションのタイミング(Pythonの2.7.3rc2、インテルCore 2 Duoプロセッサ):

In [1]: %timeit [] 
10000000 loops, best of 3: 35 ns per loop 

In [2]: %timeit list() 
10000000 loops, best of 3: 145 ns per loop 
+0

explicit> implicitについてはどうですか?私が "list()"を見ると、私は目を覚ますことはありません。私が "[]"を見ると、私は二度思います。特に、Pythonがdict()とset()の両方について{}を導入していることがわかったときには: – gsk

+4

@gsk: '[1、2]'という2つの要素を持つリスト。 1つの要素を持つリスト: '[1]'; '[]'要素のないリスト。私にはかなり明白です。私は同じ例がPython 3のセットでは違って見えることを知っています - これは私が気に入らない3.xの唯一の設計上の決定です。 –

+1

@gskと私はlist()がパラメータなしで呼び出されたときに2回考えます。 []は私にとってもっと明白であり、その種類は定義によるものです...それは定義なので。 – Logan

4

2は、別のオブジェクトを参照するための識別子listを再定義することが可能であることを除いて、完全に等価です。したがって、listを新しいタイプに再定義できるようにしたい場合を除き、[]を使用する方が安全です。

技術的には、[]を使用すると、名前の参照を避けることができるため、やや高速になります。これは、プログラムがリストを絶えず激しく割り当てている場合を除き、どんな場合でも重要であるとは考えにくいです。

スヴェンノートのように、listは他の用途もありますが、もちろん質問はしません。