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

为何Python列表用+=会拆分字符串为单个字符,append()则保留完整对象?

为什么Python中列表的+=操作和append()方法处理字符串时表现不同?

嘿,这个问题我刚学Python的时候也懵过,其实核心在于+=和append()对列表的作用逻辑完全不一样,咱们掰开揉碎了说:

先看+=操作的本质

列表的+=运算符背后调用的是__iadd__魔法方法,这个方法的规则是:它会把右侧的可迭代对象拆成一个个元素,然后逐个添加到列表中。

而Python里的字符串本身就是可迭代对象——你可以把字符串想象成一串单个字符组成的序列。所以当你执行b += i(这里的i是'hello'或者'goodbye')时,Python会自动把字符串拆成每个单独的字符,再依次加到列表b里。

代码示例:

a = ['hello', 'goodbye']
b = []
for i in a:
    b += i
print(b)  # 输出: ['h','e','l','l','o','g','o','o','d','b','y','e']

再看append()方法的设计

append()方法的定位很明确:它就是用来把整个传入的对象,作为列表的单个元素追加到末尾。

不管你传的是字符串、数字还是另一个列表,append()都不会去拆解这个对象,而是直接把它当成列表的一个元素放进去。所以当你把字符串'hello'传给b.append(i)时,它就直接把'hello'作为一个完整元素加到列表里了。

代码示例:

a = ['hello', 'goodbye']
b = []
for i in a:
    b.append(i)
print(b)  # 输出: ['hello','goodbye']

额外小技巧

如果想用+=达到和append()一样的效果,其实可以把字符串包装成一个单元素列表,这样+=就会把这个列表里的单个元素(也就是完整的字符串)加进去:

a = ['hello', 'goodbye']
b = []
for i in a:
    b += [i]
print(b)  # 输出: ['hello','goodbye']

内容的提问来源于stack exchange,提问作者Jorge C Phosphorus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:42:50