在Python中创建新空列表的最佳方法是什么?
l = []
或
l = list()
我问这个是因为两个原因:
答案 0 :(得分:283)
以下是测试哪段代码更快的方法:
% 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()
因为it is pronounceable。
答案 1 :(得分:118)
list()
本身比[]
慢,因为
有符号查找(如果你不只是将列表重新定义为其他东西,python就无法事先知道!),
有函数调用,
然后它必须检查是否传递了可迭代参数(因此它可以创建包含元素的列表)ps。在我们的案例中没有,但有“如果”检查
在大多数情况下,速度差异不会产生任何实际差异。
答案 2 :(得分:14)
我使用[]
。
答案 3 :(得分:2)
我真的不知道它,但在我看来,根据经验,jpcgt实际上是正确的。以下示例:如果我使用以下代码
t = [] # implicit instantiation
t = t.append(1)
解释器中的,然后调用t只给我“t”而没有任何列表,如果我追加别的东西,例如。
t = t.append(2)
我收到错误“'NoneType'对象没有属性'append'”。但是,如果我按
创建列表t = list() # explicit instantiation
然后它运作正常。
答案 4 :(得分:1)
只需突出显示@Darkonaut answer,因为我认为它应该更可见。
new_list = []
或new_list = list()
都很好(忽略性能),但是append()
返回None
,因此您无法执行new_list = new_list.append(something)
。