你能解释一下下面三个代码吗?为什么它们给出不同的结果

Could you please explain below three codes?, why they are giving different results

提问人:Bhuvana ravula 提问时间:11/1/2023 最后编辑:quamranaBhuvana ravula 更新时间:11/1/2023 访问量:64

问:

代码 1

list_a = []

list_a += str(1)

操作:

['1']

代码 2

list_a = []

list_a += 1

操作:

Type Error

代码 3

list_a = []

list_a = list_a + str(1)

操作:

Type Error

我期望如果运算符允许列表和字符串之间的连接,那么为什么不 int?+=

另外,为什么即使是字符串类型也不允许串联?list = list + str(1)str(1)

python-3.x 字符串 列表 运算符

评论

1赞 chepner 11/1/2023
对于列表,与方法基本相同,即 与 相同。你把它当作它的行为方式来对待。+=extenda += ba.extend(b)append
1赞 Barmar 11/1/2023
+=允许添加的值是任何类型的序列。但只允许另一个列表。+
2赞 Kelly Bundy 11/1/2023
TypeError 消息没有告诉您原因吗?
2赞 quamrana 11/1/2023
另外,您没有尝试:.我想你可能会对结果感到惊讶。list_a += str(11)
2赞 Woodford 11/1/2023
几乎重复:stackoverflow.com/questions/2347265/......

答:

0赞 Suramuthu R 11/1/2023 #1

+= 运算符并不总是加法或串联。 当您尝试使用 += 运算符将字符串添加到列表中时,它会将字符串的每个字符附加为单独的元素。+= 运算符的不同情况如下。另外请记住,不能使用 += 代替 append。因为,使用 +=,它将每个字符附加为一个单独的元素

#case 1

l = []
l += str(1)
print(l)  #output : ['1']

#case 2

l = []
l += '1','5','4'
print(l)  #output : ['1','5','4']

#case 3

l = []
l += '154'
print(l)  #output : ['1','5','4'] 

#Please note that each character is appended as a separate element in the above case

#case 4

l = ['1','2','3']
l += str(456)
print(l)  #output : ['1','2','3','4','5','6']

#case 5

st = 'abc'
st += '123'
print(st) #output : 'abc123'