Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么列表不变?_Python_Python 3.x - Fatal编程技术网

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
。为什么会这样?这与列表中元素的数据类型无关。