可能重复:
In Python, what is the difference between “.append()” and “+= []”?
在Python中,我最近注意到您可以通过两种方式追加列表项:
a.append(1)
a += [1]我喜欢使用第二种方法,因为它对我来说更具可读性。使用它有什么坏处吗?
发布于 2012-03-14 00:30:12
这两种方法并不完全等价。+=方法:
a += [1]要求您首先创建包含单个元素1的新列表,然后将其插入列表a,然后丢弃单个元素列表。这将更相当于:
a.extend([1])您可能会发现a.append(1)所做的工作较少,因为它不需要创建一个元素列表,它将在下一个步骤中丢弃。
发布于 2012-03-14 00:30:10
看看有趣的结果here。短版本:附加更快。
发布于 2012-03-14 00:36:30
这取决于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.52841401100159https://stackoverflow.com/questions/9694263
复制相似问题