关于python中列表的操作

Njx*_*Njx 6 python list operation

我处在一个非常有趣的情况,我很惊讶.实际上我认为两者i += 1 and i = i + 1都是一样的.但这里并不相同;

a = [1,2]
a += "ali"
Run Code Online (Sandbox Code Playgroud)

output is [1,2,"a","l","i"]

但如果我这样写

a = [1,2]
a = a + "ali"
Run Code Online (Sandbox Code Playgroud)

它不起作用.

我真的很困惑.他们不一样吗?

Hyp*_*ino 0

在Python中,由于你不能声明静态类型,所以这种行为不会出现,但如果你看看C++,如果你声明int a = 4为整数然后执行a += 5.4a将变成9,而a = a + 5.4将中断。

其原因在于a += ba = a + b不一样。用 Python 术语来说,a += bis 只是a.__iadd__(b)a = a + bis a = a.__add__(b),或者如果它不存在,则a = b.__radd__(a)。您无法使用将列表和字符串添加在一起,+因此第二个代码不起作用,但+=可以工作,因为它会自动将某些类型相互转换,即将可迭代对象相互转换。您不能这样做,a = []; a += ""但反之亦然,因为您可以使用 明确地将字符串转换为列表list("...")