Python 为什么列表不变?
我有以下代码:Python 为什么列表不变?,python,python-3.x,Python,Python 3.x,我有以下代码: s=['big','smas'] s[-1]+'h' 我的希望是把s变成['big','small']。那代码失败了。因此,我将代码更改为: s=['big','smas'] s[-1]=s[-1]+'h' 这很有效。 我不明白为什么第一个代码不正确 除了s[-1]=s[-1]+'h',还有没有其他方法将s更改为['big','smash']?第一个代码计算一个新字符串,这是两个部分的串联,但它不会将结果分配到任何地方 第二个代码执行相同的操作,但随后它将新字符串放入列表中。
s=['big','smas']
s[-1]+'h'
我的希望是把s
变成['big','small']
。那代码失败了。因此,我将代码更改为:
s=['big','smas']
s[-1]=s[-1]+'h'
这很有效。
我不明白为什么第一个代码不正确
除了
s[-1]=s[-1]+'h'
,还有没有其他方法将s
更改为['big','smash']
?第一个代码计算一个新字符串,这是两个部分的串联,但它不会将结果分配到任何地方
第二个代码执行相同的操作,但随后它将新字符串放入列表中。简单地说:在第一个代码中,您“缺少”了赋值(=)符号,这意味着它将执行该操作,但不会将其赋值
在第二个代码中,您正确地执行了该操作,并将更改的字符串分配给您
s
list。string在python中是不可变的。一旦创建,就不能修改它们。所以,在第一种情况下,您创建的是字符串,但没有将其值赋给某个对象。字符串是不可变的。你不能被修改。您需要重新创建它,它对s[-1]=有效,因为您正在使用=赋值重新创建它。x+1
也不会更改x
。为什么会这样?这与列表中元素的数据类型无关。