Python中的mylist = list()vs mylist = []

She*_*ock 5 python list

可能重复:
在Python中创建一个列表 - 偷偷摸摸的东西?
在Python中创建一个空列表

考虑以下:

mylist = list()
Run Code Online (Sandbox Code Playgroud)

和:

mylist = []
Run Code Online (Sandbox Code Playgroud)

使用list()或是否有任何好处[]- 在某些情况下是否应该使用另一个?

Sve*_*ach 17

对于空列表,我建议使用[].这将更快,因为它避免了内置名称的名称查找list.内置名称也可以被全局或本地名称覆盖; 这只会影响list(),而不是[].

但是,list()内置对于将其他迭代转换为列表很有用:

a = (1, 2, 3)
b = list(a)
Run Code Online (Sandbox Code Playgroud)

为了完整性,我机器上的空列表的两个选项的时间安排(Python 2.7.3rc2,Intel Core 2 Duo):

In [1]: %timeit []
10000000 loops, best of 3: 35 ns per loop

In [2]: %timeit list()
10000000 loops, best of 3: 145 ns per loop
Run Code Online (Sandbox Code Playgroud)

  • @gsk:包含两个元素`[1,2]`的列表; 包含一个元素的列表:`[1]`; 没有元素`[]`的列表.对我来说似乎很明确.我知道同样的例子对于Python 3中的集合看起来会有所不同 - 这是关于我不喜欢的3.x的唯一设计决策. (4认同)
  • @gsk,当不带参数调用 list() 时,我会三思而后行。[] 对我来说更明确,并且是根据定义......因为这就是定义。 (2认同)

Mar*_*cin 5

两者完全等效,只是可以重新定义标识符list以引用不同的对象。[]因此,除非您希望能够重新定义list为新类型,否则使用起来更安全。

从技术上讲,使用[]会稍微快一些,因为它避免了名称查找。在任何情况下,这都不太可能产生重大影响,除非程序不断地、疯狂地分配列表。

正如斯文指出的那样,list它还有其他用途,但当然问题并没有问这些。