在Python中创建一个空列表
创建一个空列表的两种方法:使用[]
和使用list()
。在Python中,使用[]
创建空列表的速度比使用list()
创建空列表的速度快,因为list()
有一些额外的步骤需要执行。
首先,list()
需要进行符号查找,因为Python无法事先知道您是否重新定义了list
。接下来,list()
需要进行函数调用。然后,它需要检查是否传递了可迭代的参数(以便从中创建列表)。在我们的情况下,没有传递参数,但是仍然需要进行一次“if”检查。这些额外的步骤使得list()
相对于[]
而言速度较慢。
然而,在大多数情况下,这种速度差异不会对实际应用产生任何影响。
需要注意的是,在使用list()
时,它只需要检查是否有参数传递进来。而“检查是否可迭代”和“从参数创建列表”的步骤并不会发生;它们只在有参数的情况下才会应用。实际上,[]
的C代码可能调用了与list()
相同的C代码。无论如何,与(a)+(b)相比,(c)中涉及的时间都非常短。
总结一下,使用[]
创建空列表的速度快于使用list()
。在大多数情况下,这种速度差异对实际应用没有实质性影响。
在Python中创建一个空列表的方法是使用[]
或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
根据测试结果,使用[]
创建空列表的速度比使用list()
要快得多。但是在实际应用中,初始化列表可能只是程序的一个非常小的部分,所以担心性能差异可能是没有必要的。
关于代码的可读性,这是一个非常主观的问题。有些人喜欢使用[]
,但一些非常有经验的人,如Alex Martelli,更喜欢使用list()
,因为它可以被发音。
有人会疑惑为什么list('')
的结果是[]
而不是['']
。这是因为list()
函数是从可迭代类型创建列表的,它不能接受多个参数。如果尝试输入list('abcd')
,就能理解这一点了。