首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表

Python列表
EN

Stack Overflow用户
提问于 2012-03-14 00:26:54
回答 3查看 1.3K关注 0票数 1

可能重复:

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

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

代码语言:javascript
复制
a.append(1)
a += [1]

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-14 00:30:12

这两种方法并不完全等价。+=方法:

代码语言:javascript
复制
a += [1]

要求您首先创建包含单个元素1的新列表,然后将其插入列表a,然后丢弃单个元素列表。这将更相当于:

代码语言:javascript
复制
a.extend([1])

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

票数 5
EN

Stack Overflow用户

发布于 2012-03-14 00:30:10

看看有趣的结果here。短版本:附加更快。

票数 2
EN

Stack Overflow用户

发布于 2012-03-14 00:36:30

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

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

与几乎每个性能问题一样,除非您的代码确实是性能关键,否则这并不重要。使用cpython 2.7,我测量了以下值:

代码语言:javascript
复制
>>> 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9694263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档