求助:python中深拷贝和浅拷贝的一道题目

看到一到题目:

>>> import copy
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> print id(a) == id(c)
_____
>>> print id(a) == id(d)
_____
>>> print id(a[0]) == id(c[0])
_____
>>> print id(a[3]) == id(d[3])
_____
A. True  True  True  True     B. False  False  True  False 
C. False  False  False  False   D. True  True  False  False
然后,我是这样考虑的:


然后,就自然而然地得到了C的答案,但是结果却是错的,又在python的终端中进行运算,发现正确答案是B,然后,我就在纠结:id(a[0])==id(c[0]),为什么是True。因为,根据我的推断,c[0]的地址和a[0]的地址是不一样的。

紧接着,我又做了一个实验:

>>> c.append(4)
>>> a
[1,2,3,['a','b','c']]
>>> c
[1,2,3,['a','b','c'],4]
>>> id(a[0])==id(c[0])
实验结果仍然是True,我很纳闷是哪里错了?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值