python中关于赋值的问题

就是在这段代码中

a = [1, 2, 3, 4, 5]

b = a

b[1] = 7

print(a)

test = '123'

test2 = test

test2 = '456'

print(test)

在b修改了下标为1的值以后,a的值要改变

但是为什么test2修改了值但是test的值不改变呢?

2个回答

字符串不是引用类型,修改其中之一,不会改变其余,要用一个类把字符串包裹起来,不同的变量指向相同的对象,才可以

New_boy25
New_boy25 列表是可变数据类型,字符串是不可变字符串类型。
7 个月之前 回复
Liser_Gun
Laser_Gun ❤感谢
7 个月之前 回复

b = a 和 test2 = test 其实都是让后一个变量指向前者的数据的存放地址。
在运行b[1] = 7时,由于列表是可变数据类型,所以只是把原地址的列表里的第二个值换成了数字7,所以打印变量a时,是跟变量b一样的内容。
在运行test2 = '456'时,由于str是不可变数据类型,test2会指向另外一个地址,让里面存放'456',此时test与test2指向了两个不同的地址,所以打印出不一样的内容。
尝试运行下面这段代码,类似与列表的修改数据操作,在字符串上是不可行的。

a = '123'
b = a
b[2] = '5'

Traceback (most recent call last):
File "", line 1, in
b[2] = '5'
TypeError: 'str' object does not support item assignment
翻译:TypeError: 'str'对象不支持项分配

Liser_Gun
Laser_Gun 感谢
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
python里,创建实例时声明他的一个属性是另一个类的实例,但创建时并不给它赋值
1
dataframe中插入列赋值后显示为空,但交互窗口单独显示列却不是空的,如何解决
2
Python语言可以在判断语句中赋值吗?
2
python多进程共享内存失败,共享数组无法在进程内赋值
1
python使用ctypes调用c++函数时怎样传入IPlImage型的数据?
1
我想问下python怎么判断函数的开始和结束的
1
怎么尽量简短地对矩阵的切片用另一个矩阵赋值
0
关于python类的问题,小白在线求解啊
2
求助一个Python 循环读取文件,并对读到的字符串进行赋值,然后进一步生成json file 的方法。
3
Python中关于在list中使用for i in range()的问题
2
python打开文件时,将其存为列表,为什么后面会加\n
0
python用for循环给三维列表赋值,结果很多数值是零
3
python中的字典赋值问题???
1
笨方法学python3 习题25,给sorted_words重新赋值,为什么不行,告诉我list不能分割
4
如何在一个py文件中引用在另一个py文件中定义的赋值?
0
python 如何删除dataframe中的一个值
2
python:从段落中搜出的多个列表,如何合并?
0
xpath表达式中,赋值给i, 然后如何定位到第i个元素?(selenium下)
2
请教,关于《Python从入门到实践》第九章 类 中的例子 electric_car一段代码的问题
2
使用Python 在excel指定单元格中写入指定单元格,但是在excel中不显示出来