【发布时间】:2012-12-03 23:28:42
【问题描述】:
在 Python 中,list += x 似乎适用于任何可迭代的x:
In [6]: l = []
In [7]: l += [1]
In [8]: l += (2, 3)
In [9]: l += xrange(5)
In [10]: l
Out[10]: [1, 2, 3, 0, 1, 2, 3, 4]
这种行为是否记录在任何地方?
为了与list + x 对比,后者仅在x 也是list 时才有效。这在documentation 中有详细说明。
【问题讨论】:
-
我会寻找一些文档来支持它,但我相信在列表的情况下
+=运算符模仿extend。我会看看能不能找到一些东西来证实这一点。 -
@AshwiniChaudhary:我实际上在发布问题之前查看了 PEP,但没有找到任何关于
+=和列表的具体内容。有没有我忽略的部分? -
@NPE 可能是这个p.boxnet.eu/16970,也来自同一个PEP:
Thei' in__iadd__' stands forin-place, and if you call the moduledis` on+=然后你会看到它只是就地添加。 -
我发现的最接近的是
__iadd__documentation 中的注释“这些方法应该尝试就地执行操作(修改自我)[...]”。
标签: python operators containers