猿问

Python list内容的改变问题

Pyhton新手。今天看教程的时候实验了如下代码:
old='abc'
old.replace('a','A')
printold
这里old并没有被替换,这个我可以理解,因为replace方法返回了一个新的对象,old仍指向原对象。所以打印的仍然是abc
替换成:
old='abc'
new=old.replace('a','A')
printnew
即可。结果就是Abc了。
但是,又想到了这个问题,代码如下:
stu1='Tom'
stu2='John'
classMates=[stu1,stu2]
printclassMates
stu2='Marry'
printclassMates
结果却是:['Tom','John']['Tom','John']
而不是预期的:['Tom','John']['Tom','Marry']
如果再对list赋值一次:
classMates=[stu1,stu2]
就可以得到想要的效果。
所以想问的是list创建的时候指向的是stu1和stu2的位置么,为什么stu2中的内容变了list中的不会变呢?还是像最开始的那个例子一样,产生了一个新的list?现在的classMates没有指向更改后的list而是还是指向原来的list?
谢谢!
九州编程
浏览 845回答 2
2回答

月关宝盒

stu1='Tom'stu2='John'这两句创建了两个字符串对象:'Tom'和'John'并将这两个对象的引用赋值给stu1跟stu2。classMates=[stu1,stu2]两个字符串对象成为了list的元素引用计数分别+1,就是2stu2='Marry''John'的引用计数-1'Marry'引用计数+1
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答