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

为何Python中列表的+=操作可行而+操作报错?

为什么列表的+=和+操作表现不同?

核心区别

Python中列表的+=和+操作符底层实现逻辑完全不一样:

  • +=(对应__iadd__方法)会自动迭代右侧的可迭代对象,将元素逐个添加到原列表;
  • +(对应__add__方法)要求两侧必须是相同类型的序列,直接拼接两个序列,不会做自动迭代转换。

针对你的代码分析

第一段代码(正常运行)

fruits = ['Apple', 'Orange']
fruits += 'Banana'

这里+=把字符串'Banana'当成可迭代对象,逐个取出每个字符('B'、'a'、'n'、'a'、'n'、'a')添加到原列表,最终fruits变成:
['Apple', 'Orange', 'B', 'a', 'n', 'a', 'n', 'a']

第二段代码(报错)

fruits = ['Apple', 'Orange']
fruits = fruits + 'Banana'

+操作符要求左右两侧都是列表,但右侧是字符串,类型不匹配,Python会抛出TypeError: can only concatenate list (not "str") to list错误。如果要让这段代码正常运行,需要把字符串转成列表:

fruits = fruits + list('Banana')

和数字操作的差异

对于数字来说,+和+=都是简单的数值运算,没有类型转换或迭代的逻辑,所以num = num + 1和num += 1完全等价。但列表作为容器类型,这两个操作的实现逻辑不同,因此表现出差异。

内容的提问来源于stack exchange,提问作者حسام المالكي

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:52:05