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

来源:互联网 发布:windows键盘option键 编辑:程序博客网 时间:2024/06/06 03:30

看到一到题目:

>>> 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,我很纳闷是哪里错了?

0 0
原创粉丝点击