我刚检查了list()和[]之间的速度差异,并且惊讶地发现列表()比列表创建的[]慢3倍。我在ipython中用%timeit magic测试了这个。
In [1]: %timeit a=list()
10000000 loops, best of 3: 67.5 ns per loop
In [2]: %timeit b=[]
10000000 loops, best of 3: 21.9 ns per loop
然后我想也许在我们实际放入一个元素之前不会发生一些事情,所以我测试了以下内容。
In [3]: %timeit list().append(1)
10000000 loops, best of 3: 143 ns per loop
In [4]: %timeit [].append(1)
10000000 loops, best of 3: 88.7 ns per loop
现在关系改变了,所以我只测试了追加。
In[5]: a=list()
In[6]: b=[]
In [7]: %timeit a.append(1)
10000000 loops, best of 3: 49.8 ns per loop
In [8]: %timeit b.append(1)
10000000 loops, best of 3: 54.2 ns per loop
这是什么样的巫术?为什么列表和附件不等同?