可能重复:
In Python, what is the difference between “.append()” and “+= []”?
在Python中,我最近注意到您可以通过两种方式追加列表项:
a.append(1)
a += [1]
我喜欢使用第二种方法,因为它对我来说更具可读性。使用它有什么缺点吗?
答案 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