Python列表追加

时间:2012-03-14 00:26:55

标签: python list

  

可能重复:
  In Python, what is the difference between “.append()” and “+= []”?

在Python中,我最近注意到您可以通过两种方式追加列表项:

a.append(1)
a += [1]

我喜欢使用第二种方法,因为它对我来说更具可读性。使用它有什么缺点吗?

3 个答案:

答案 0 :(得分:5)

这两种方法并不完全相同。 +=方法:

a += [1]

要求您首先创建一个包含单个元素1 new 列表,将其添加到列表a,然后丢弃单个元素列表。这更等同于:

a.extend([1])

您可能会发现a.append(1)的工作量较少,因为它不需要创建一个单元素列表,它将在下一步中丢弃。

答案 1 :(得分:2)

查看有趣的结果here。简短版:追加更快。

答案 2 :(得分:0)

这取决于Python实现,但append永远不会比第二个变种慢。

a += [1]创建一个包含一个元素的临时列表。此外,+=运算符必须执行一些额外的工作来确定新列表的大小。一个好的Python实现可以通过不在内存中实际构建列表[1]来减少开销。

与几乎所有性能问题一样,除非您的代码对性能至关重要,否则无关紧要。使用cpython 2.7,我测量了以下值:

>>> import timeit
>>> timeit.timeit('l = []\nfor i in range(200):\n\tl.append(1)\n')
27.95561385154724
>>> timeit.timeit('l = []\nfor i in range(200):\n\tl += [1]\n')
37.52841401100159