您的位置:首页 > 编程语言 > Python开发

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

2016-04-09 21:06 579 查看
看到一到题目:

>>> 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,我很纳闷是哪里错了?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: