在 Python 中创建新的空列表的最佳方法是什么?
l = []
或者
l = list()
我问这个是因为两个原因:
- 技术原因,至于哪个更快。(创建一个类会导致开销?)
- 代码可读性——哪一个是标准约定。
在 Python 中创建新的空列表的最佳方法是什么?
l = []
或者
l = list()
我问这个是因为两个原因:
以下是测试哪段代码更快的方法:
% 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。在我们的例子中没有,但有“如果”检查
在大多数情况下,速度差异不会产生任何实际差异。
我用[]
.
只是为了突出@Darkonaut 的答案,因为我认为它应该更明显。
new_list = []
或者new_list = list()
都很好(忽略性能),但append()
返回None
,结果你不能做new_list = new_list.append(something)
.
我真的不知道,但在我看来,根据经验,jpcgt 实际上是正确的。以下示例:如果我使用以下代码
t = [] # implicit instantiation
t = t.append(1)
在解释器中,然后调用 t 给我的只是“t”而没有任何列表,如果我附加其他内容,例如
t = t.append(2)
我收到错误“'NoneType' 对象没有属性 'append'”。但是,如果我通过以下方式创建列表
t = list() # explicit instantiation
然后它工作正常。