list()和[]之间的区别是什么?

时间:2015-11-15 04:26:16

标签: python

以下代码之间的区别是什么:

foo = list()

foo = []
Python建议有一种做事方式,但有时似乎不止一种。

3 个答案:

答案 0 :(得分:21)

一个函数调用,一个是文字:

>>> import dis
>>> def f1(): return list()
... 
>>> def f2(): return []
... 
>>> dis.dis(f1)
  1           0 LOAD_GLOBAL              0 (list)
              3 CALL_FUNCTION            0
              6 RETURN_VALUE        
>>> dis.dis(f2)
  1           0 BUILD_LIST               0
              3 RETURN_VALUE        

使用第二种形式。它更像Pythonic,它可能更快(因为它不涉及加载和调用单独的函数)。

答案 1 :(得分:13)

list是一个可在运行时覆盖的全局名称。 list()调用该名称。

[]始终是列表文字。

答案 2 :(得分:12)

为了完成,需要注意的另一件事是list((a,b,c))将返回[a,b,c],而[(a,b,c)]将不会解包元组。当您想要将元组转换为列表时,这非常有用。反之亦然,tuple([a,b,c])会返回(a,b,c)

编辑:正如orlp提到的,这适用于任何可迭代的,而不仅仅是元组。

相关问题