求助:python中深拷贝和浅拷贝的一道题目
2016-04-09 21:06
579 查看
看到一到题目:
然后,我是这样考虑的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/bd3c2b1c0088b16bb0d10fa5662ea175)
然后,就自然而然地得到了C的答案,但是结果却是错的,又在python的终端中进行运算,发现正确答案是B,然后,我就在纠结:id(a[0])==id(c[0]),为什么是True。因为,根据我的推断,c[0]的地址和a[0]的地址是不一样的。
紧接着,我又做了一个实验:
实验结果仍然是True,我很纳闷是哪里错了?
>>> 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,我很纳闷是哪里错了?
相关文章推荐
- ubuntu无法打开software-center
- LeetCode Best Time to Buy and Sell Stock II
- Python random
- 据廖雪峰python3教程----python学习第十一天
- 使用Runtime.getRuntime().exec()在java中调用python脚本
- Python处理JSON
- Python3 print()函数sep,end,file参数用法练习
- LoadRunner使用odbc时报错can't get hostname for your address的解决方法
- 萌妹子Python入门指北(四)
- 萌妹子Python入门指北(三)
- python 学习--帮助信息
- python-MySQL学习笔记-第三章-利用Connector/Python来插入数据
- python入门
- [python]解决urllib.urlretrieve()下载不完全的问题
- python面向对象
- numpy.std() 计算矩阵标准差
- Python yield 使用浅析
- Python--将内容写入文本文件中
- numpy.mean() 计算矩阵均值
- Python学习笔记-装饰器