wangwang123 发表于 2021-10-8 05:31:56

关于浅拷贝,深拷贝

>>> x =[,]
>>> y = x
>>> y.append(4)
>>> x
[, , 4]
>>> x =[,]
>>> y = x.copy()
>>> x
[, ]

以上是我在idle上跑的,是不是可以理解 y = x是另外的一种深拷贝呢?对x所有元素的引用,而非复制。求大神确认一下~

wp231957 发表于 2021-10-8 07:05:42

>> y = x.copy()   这是浅拷贝

逃兵 发表于 2021-10-8 08:42:58

https://zhuanlan.zhihu.com/p/74527997

FK二十一 发表于 2021-10-8 11:08:39

不是的,赋值就像贴标签。[,]这个对象在电脑内存里只创建了一个。所以y=x相当于创建一个和x相同的标签y。结果是x和y同时指向[,]这个对象。y.append()这个操作改变了我们唯一的对象:[,],这才会导致调取x的时候调取了[,,4]这个被改变了的唯一的对象。赋值和拷贝的不同之处在于,拷贝创造了一个新的对象[,],这个时候内存里面就有两个相同的对象了。一个是一个类似于指针的东西,只是用来调用、指向的,一个却实实在在的创造出了一个相同的对象。

wangwang123 发表于 2021-10-9 23:25:31

FK二十一 发表于 2021-10-8 11:08
不是的,赋值就像贴标签。[,]这个对象在电脑内存里只创建了一个。所以y=x相当于创建一个和x相同 ...

懂了!通俗易懂~谢谢

wangwang123 发表于 2021-10-9 23:29:41

逃兵 发表于 2021-10-8 08:42
https://zhuanlan.zhihu.com/p/74527997

谢谢~很好
页: [1]
查看完整版本: 关于浅拷贝,深拷贝