Python中使用+运算符向列表添加元素时的异常问题
为什么
a = a + '3'报错但a += '3'能得到[1,2,'3']? 两种写法的本质区别
a = a + '3'报错原因:+运算符要求左右两侧操作数的类型必须一致。这里a是列表类型,'3'是字符串类型,两者无法直接通过+拼接,Python会直接抛出TypeError,提示不能将列表与字符串相加。a += '3'正常执行的原因:+=属于增强赋值运算符,对于列表对象来说,它实际调用的是列表的__iadd__()方法。这个方法接受可迭代对象作为参数,而字符串本身是可迭代的(会被拆分为单个字符)。所以'3'会被当作可迭代对象,其中的元素(即'3'这个字符)会被添加到列表a的末尾,最终得到[1,2,'3']。
补充验证
如果执行a += 'abc',结果会是[1,2,'a','b','c'],这进一步证明+=是把字符串作为可迭代对象,逐个添加其元素到列表中。
内容的提问来源于stack exchange,提问作者Amit Agarwal
相关产品推荐
相关产品推荐

