关于copy的问题
视频中,都是执行了copy函数
b[0].append(10) 执行后,a列表中的数值也更改了。 但是执行b.append(10) a列表中的数值并不会更改。这是为什么? 我的一开始是这样理解的,a.b都是相当c语言中的指针。a=b只是赋值了指针,因此更改任何内容都相当 于更改了同指针内存下的值。copy函数相当于另外开了内存,并把值也填充到内存里了,因此更改互不影响 但这里。b[0].append添加某个值的内容,为什么另外一个也会有影响,b.append添加却互不影响呢?
21
收起
正在回答
1回答
同学,你好。 a 和 b 是一个独立的对象,但他们的子元素(可变数据类型)还是指向的是引用,浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,只有原始数据受影响
例:a,b的id地址是不一样的,表示是两个不同的对象,而a[0]和b[0]的id地址是一样的,表示指向的是相同的内存地址,因此是同学看到的情况
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题
登录后可查看更多问答,登录/注册
Python全栈工程师2020
- 参与学习 人
- 提交作业 5231 份
- 解答问题 2433 个
Facebook曾声称“只招全栈工程师”!全栈用人需求猛增,市面人才紧缺。 0基础进击Python全栈开发,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星