You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中+=运算符与普通加法赋值表现不一致问题咨询

Python 列表 + 与 += 运算符的行为差异

这两个赋值表达式并不等价,二者底层实现逻辑完全不同,具体差异如下:

1. c1 = c1 + c2 报错的原因

+ 运算符调用列表的__add__方法,逻辑是生成一个全新的列表对象,要求加号两侧必须是同类型(都是列表)才能执行拼接。
你代码中c1是列表类型,c2是字符串类型,类型不匹配,因此直接抛出TypeError。
如果要让该语句正常执行,需要把c2显式转换为列表:

c1 = c1 + list(c2)

2. c1 += c2 正常运行的原因

+= 运算符调用列表的__iadd__方法(in-place add,原地修改),逻辑是直接修改原列表对象,不会生成新对象,只要求右侧是任意可迭代对象即可,不需要和左侧类型一致,内部等价于执行c1.extend(c2)。
字符串本身属于可迭代对象,会被逐个遍历取出字符追加到原列表末尾,执行后c1的结果为[2, 5, 8, 9, 'h', 'e', 'l', 'l', 'o'],完全符合语法规则。

核心差异总结

  • + 操作属于结果生成类操作,要求操作数类型严格匹配,返回新对象
  • += 操作属于原地修改类操作,仅要求右操作数是可迭代对象,直接修改原对象,内存地址不会变化

内容的提问来源于stack exchange,提问作者Chandan Kumar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:45:02