在Python中创建一个空列表在Python中创建一个空列表(Creating an empty l

2019-05-12 17:37发布

什么是在Python中创建一个新的空单的最好方法?

l = [] 

要么

l = list()

我问这是因为两个原因:

  1. 技术上的原因,因为这是更快的。 (创建类导致的开销?)
  2. 代码的可读性 - 这是一个标准的约定。

Answer 1:

这里是你如何测试这一块的代码是速度快:

% 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

然而,在实践中,这种初始化是最有可能你的程序的一个非常小的部分,所以担心这可能是执迷不悟。

可读性是非常主观的。 我喜欢[]但一些非常有见地的人,像亚历克斯·马尔泰利,喜欢list()因为它是可发音 。



Answer 2:

list()是固有地慢于[]因为

  1. 有符号查找(没有办法让蟒蛇提前知道,如果你不只是重新定义列表别的东西!)

  2. 有函数调用,

  3. 那么它必须检查是否有可迭代的参数传递(因此它可以创建一个从它的元素列表)PS。 没有在我们的情况,但有“如果”检查

在大多数情况下,速度差不会做出任何实际的差异,但。



Answer 3:

我用[]

  1. 它的速度更快,因为列表表示是短路。
  2. 创建具有项的列表看起来应该大致相同创建无列表,为什么会有区别吗?


Answer 4:

我真的不知道这件事情,但在我看来,根据经验,这jpcgt实际上是正确的。 下面的例子:如果我使用下面的代码

t = [] # implicit instantiation
t = t.append(1)

在翻译中,然后调用T得到我只是“T”没有任何名单,如果我追加别的东西,如

t = t.append(2)

我得到的错误“‘NoneType’对象有没有属性‘追加’”。 但是,如果我创建的列表中

t = list() # explicit instantiation

然后正常工作。



文章来源: Creating an empty list in Python