拷贝是音译的词,其实他是从copy这个英文单词音译过来的,那什么是copy? copy其实就是复制一份,也就是所谓的抄一份。深浅copy其实就是完全复制一份,和部分复制一份的意思。

1.赋值运算

  

 l1 = [,,,['barry','alex']]
l2 = l1 l1[] =
print(l1) # [, , , ['barry', 'alex']]
print(l2) # [, , , ['barry', 'alex']] l1[][] = 'wusir'
print(l1) # [, , , ['wusir', 'alex']]
print(l2) # [, , , ['wusir', 'alex']]

不同与C、C++犹豫python不用静态定义数据对象 如 int a1,a2;所以这里不再是值的传递赋值,而python则是地址的共享。

2.浅拷贝:

  

 #同一代码块下:
l1 = [, '太白', True, (,,), [, ]]
l2 = l1.copy()
print(id(l1), id(l2)) #
print(id(l1[-]), id(l2[-])) #
print(id(l1[-]),id(l2[-])) # # 不同代码块下:
>>> l1 = [, '太白', True, (, , ), [, ]]
>>> l2 = l1.copy()
>>> print(id(l1), id(l2)) >>> print(id(l1[-]), id(l2[-])) >>> print(id(l1[-]), id(l2[-]))

对于浅copy来说,只是在内存中重新创建了开辟了一个空间存放一个新列表,但是新列表中的元素与原列表中的元素是公用的。

3.深拷贝

  

# 同一代码块下
import copy
l1 = [, 'alex', True, (,,), [, ]]
l2 = copy.deepcopy(l1)
print(id(l1), id(l2)) #
print(id(l1[]),id(l2[])) #
print(id(l1[-]),id(l2[-])) #
print(id(l1[-]),id(l2[-])) # # 不同代码块下
>>> import copy
>>> l1 = [, '太白', True, (, , ), [, ]]
>>> l2 = copy.deepcopy(l1)
>>> print(id(l1), id(l2)) >>> print(id(), id()) >>> print(id(-), id(-)) >>> print(id(l1[-]), id(l2[-]))

对于深copy来说,列表是在内存中重新创建的,列表中可变的数据类型是重新创建的,列表中的不可变的数据类型是公用的。

 >>> l1 = [, , , , ['alex']]
>>> l2 = l1[::]
>>> l1[-].append()
>>> print(l2)
[, , , , ['alex', ]]
>>> print(l1)
[, , , , ['alex', ]]

面试题目

最新文章

  1. MySQL, 创建一个只读用户和一个所有权限用户
  2. DOM基本概念和操作
  3. 移植UE4的模型操作到Unity中
  4. (转)UIApplication sharedApplication详细解释-IOS
  5. LInux下安装jdk与环境配置与Webstorm的安装
  6. Git 学习资源
  7. UIScrollView 和 UIPageControl
  8. javascript中slice() splice() concat()操作数组的方法
  9. 浏览器对象模型BOM总结
  10. python练习实例2--------构造数据类型
  11. linux文件权限目录配置笔记
  12. linux文件属性的10个字符各代表什么意思
  13. C++中struct 和 class的区别
  14. M - Help Hanzo LightOJ - 1197 (大区间求素数)
  15. dfs模版
  16. 用Javascript,DHTML控制表格的某一列的显示与隐藏
  17. Zabbix 创建监控项目
  18. 【Git使用】SourceTree+Git简单使用(Windows)(转)
  19. kali linux 安装Nessus
  20. 安装spring-tool-suite插件

热门文章

  1. netty源码分析(十八)Netty底层架构系统总结与应用实践
  2. Ionic3学习笔记(十四)使用 videogular2 实现视频播放以及遇到的一些问题
  3. JavaScript深入浅出-闭包
  4. OpenSSL编程之摘要
  5. concurrent包分析之Executor框架
  6. 【译文】使用webpack提高网页性能优化
  7. 线程sleep,wait,notify,join,yield方法解析
  8. 关于图数据库HugeGraph的百万,千万,亿量级测试
  9. htm5新特性(转)
  10. electron+vue制作桌面应用--自定义标题栏