【发布时间】:2013-04-28 04:21:23
【问题描述】:
>>> a = (1,2)
>>> a += (3,4)
>>> a
(1, 2, 3, 4)
>>>
还有一个列表:
>>> b = [1,2]
>>> b += [3,4]
>>> b
[1, 2, 3, 4]
>>>
由于元组是不可变的,而列表是可变的,我们如何解释这种行为?
【问题讨论】:
-
我认为
+=定义了一个新元组并返回它(即不会改变现有的元组)。关键不是你看到的值,而是底层对象是否相同。使用列表时,会添加相同的对象(不会创建新对象)。 -
数字也是不可变的,但
a = 2; a += 2有效。 -
@cool_n_curious 请注意,这对于元组来说是一项代价高昂的操作。列表可以简单地扩展自己,而每次执行此操作时元组都必须构造一个全新的元组,因此在需要时使用列表