可能重复:
Creating a list in Python- something sneaky going on?
Creating an empty list in PythonMYLIST =列表()与MYLIST = []在Python
考虑以下几点:
mylist = list()
和:
mylist = []
使用list()
或[]
有什么好处 - 应该在某种情况下使用另一种吗?
可能重复:
Creating a list in Python- something sneaky going on?
Creating an empty list in PythonMYLIST =列表()与MYLIST = []在Python
考虑以下几点:
mylist = list()
和:
mylist = []
使用list()
或[]
有什么好处 - 应该在某种情况下使用另一种吗?
对于一个空的列表,我建议使用[]
。这会更快,因为它避免了内置名称list
的名称查找。内置名称也可以用全局或本地名称覆盖;这只会影响list()
,而不会影响[]
。
的list()
内置的是有用的一些其他的迭代转换到一个列表,但:
a = (1, 2, 3)
b = list(a)
为了完整起见,两个选项在我的机器上的空列表的时机(Python的2.7.3rc2,英特尔酷睿2):
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
显式>隐式呢?当我看到“list()”时,我不会眨眼睛。如果我看到“[]”,我会考虑两次,特别是当我发现python为dict()和set()引入{}时:? – gsk 2012-08-02 15:16:01
@gsk:包含两个元素'[1,2]'的列表;一个元素列表:'[1]';没有元素'[]'的列表。对我来说似乎相当明确。我知道同样的例子在Python 3中看起来会有所不同 - 这是关于3.x的唯一设计决定,我不喜欢。 – 2012-08-02 15:17:35
@gsk,并且在没有参数的情况下调用list()时我会考虑两次。 []对我来说更加明确,而且根据定义......这是定义。 – Logan 2012-08-02 15:23:53
两者是完全等效的,只是它是可能的重新定义标识符list
来指代不同的对象。因此,使用[]
更安全,除非您希望能够将list
重新定义为新类型。
从技术上讲,使用[]
会稍微快一些,因为它避免了名称查找。这在任何情况下都不太可能是重要的,除非该计划经常和激烈地分配清单。
正如Sven所指出的,list
有其他用途,但当然这个问题并没有问到那些问题。
我倾向于认为'[]'会更快,因为它保存了一个函数调用,但我以前错了。你是否尝试过测量这个? – 2012-08-02 15:04:34
@FrédéricHamidi - 我很确定我在之前的SO帖子中看到过这个。我会尽力找到它... – mgilson 2012-08-02 15:05:13
我还没有尝试过测量,我会尽快更新,谢谢Frederic – Sherlock 2012-08-02 15:05:26