- 主题:Python对象的深拷贝如图,为啥5和6不是共享的?
Python对象的深拷贝如图,为啥5和6不是共享的?
import copy
a= ['hello',3,[3,5,6]]
b = copy.deepcopy(a)

--
FROM 218.108.214.*
>>> import copy
>>> a= ['hello',3,[3,5,6]]
>>> b=copy.deepcopy(a)
>>> id(a[0])
64414560
>>> id(b[0])
64414560
>>> id(a[1])
1679271888
>>> id(b[1])
1679271888
>>> id(a[2])
64334312
>>> id(b[2])
33316680
>>> id(a[2][0])
1679271888
>>> id(b[2][0])
1679271888
>>> id(a[2][1])
1679271920
>>> id(b[2][1])
1679271920
>>> id(a[2][2])
1679271936
>>> id(b[2][2])
1679271936
>>>
--
FROM 218.108.214.*
我输出各元素id值,应该是图错了
【 在 Beijing2O22 的大作中提到: 】
: 常量和变量的处理是不同的
:
--
FROM 218.108.214.*
我输出各元素id值,应该是图错了
【 在 poggy 的大作中提到: 】
:
: 浅拷贝, a[3][0] 和 b[3][0] 如果其中一个改变了 例如 a[3][0] =100, 那么你读b[3][0]它也变成100。
: 深拷贝, a[3][0] 和 b[3][0] 如果其中一个改变,另一个是不变的, 因此, 5和6需要深度副本, 值是独立。
--
FROM 218.108.214.*
同一个常量的引用吧
【 在 shmilhong 的大作中提到: 】
: 为啥[3,5,6]中的3是共享的?
--
修改:ooolinux FROM 218.108.214.*
FROM 218.108.214.*
我输出各元素id值,应该是图错了
【 在 gfkid 的大作中提到: 】
: 是不是画错了,反正看看得了
--
FROM 218.108.214.*
我输出各元素id值,应该是的
【 在 chglele 的大作中提到: 】
: 列表中的3和外边的3是共享的?这个确认过么
: 发自「今日水木 on iPhone 12」
--
FROM 218.108.214.*
我输出各元素id值,应该是图错了
【 在 finlab 的大作中提到: 】
: 我觉得是这个图画的不准确
:
--
FROM 218.108.214.*
不理解
【 在 annals 的大作中提到: 】
: 小整数的id是同一个,但这并不意味着共享,因为类型就immutable
:
--
FROM 218.108.214.*
可以画到中间
【 在 gfkid 的大作中提到: 】
: 赞
: 我是看着像是为了图好看,不然线得弯曲
--
FROM 120.35.168.*