通俗的理解,浅就是外面,深就是里面。浅拷贝的意思就是只拷贝外面的一层,深拷贝就是拷贝的里面的所有。

看两段代码:

元组:

#!/usr/bin/env/python
# -*-coding:utf-8-*-
# authour:xiapmin_pei import copy
#定义一个元组,元组里面有一个列表,可以理解成内部
atuple=(1,2,3,[4,5])
#将元组赋值给b
b = atuple
#浅拷贝
c = copy.copy(atuple)
#深拷贝
d = copy.deepcopy(atuple)
#打印每个对象的值
print "b is {0},c is {1},d is {2}".format(b,c,d) #改变atuple里面内嵌的列表,给列表增加一个6
atuple[3].append(6) print "b is {0},c is {1},d is {2}".format(b,c,d) 结果:可以看出来,将atuple赋值给b,b和atuple始终是一致的
   浅拷贝外面一层不会变,但是嵌套的列表会改变
   深拷贝只和atuple的原始一样,不会随着atuple的改变而改变

b is (1, 2, 3, [4, 5]), c is (1, 2, 3, [4, 5]), d is (1, 2, 3, [4, 5])
b is (1, 2, 3, [4, 5, 6]), c is (1, 2, 3, [4, 5, 6]), d is (1, 2, 3, [4, 5])

列表:

#!/usr/bin/env/python
# -*-coding:utf-8-*-
# authour:xiapmin_pei import copy alist = [1,2,3,[4,5]] b = alist
c = copy.copy(alist)
d = copy.deepcopy(alist) print "alist是{0},b是{1}, c是{2}, d是{3}".format(alist,b,c,d) alist[3].append(6) print "alist是{0},b是{1}, c是{2}, d是{3}".format(alist,b,c,d) alist.append(7) print "alist是{0},b是{1}, c是{2}, d是{3}".format(alist,b,c,d) 结果:可以看出来,将alist赋值给b,b无论怎么变化,都是和alist是一样的
   浅拷贝copy只拷贝第一层,第一层不改变,但是嵌套的列表随着alist的改变而改变
   深拷贝deepcopy只和原先的alist是一致的,无论alist怎么改变,deepcopy只拷贝一次原先的。

alist是[1, 2, 3, [4, 5]],b是[1, 2, 3, [4, 5]], c是[1, 2, 3, [4, 5]], d是[1, 2, 3, [4, 5]]
alist是[1, 2, 3, [4, 5, 6]],b是[1, 2, 3, [4, 5, 6]], c是[1, 2, 3, [4, 5, 6]], d是[1, 2, 3, [4, 5]]
alist是[1, 2, 3, [4, 5, 6], 7],b是[1, 2, 3, [4, 5, 6], 7], c是[1, 2, 3, [4, 5, 6]], d是[1, 2, 3, [4, 5]]

最新文章

  1. 让Unity NavMesh为我所用
  2. UVA 10795 新汉诺塔问题
  3. sed字符串替换
  4. command line
  5. 【转】SQL Server 2008下载 (附注册码)
  6. MySQL 简洁连接数据库方式
  7. [Objective-c 基础 - 2.2] OC弱语法、类方法
  8. perl binlog dml操作报告
  9. EEPlat的元数据驱动的运行引擎
  10. input表单中嵌入百度地图
  11. php 5.6,7.0静态方法调用和new调用方法性能差距
  12. git 拉取分支代码 合分支
  13. C++ 无锁数据结构
  14. 详解Zookeeper原理与应用场景
  15. jenkins之 pipeline 小尝试
  16. CRC 详解
  17. 基于jQuery实现的腾讯互动娱乐网站特效
  18. python 2 类与对象
  19. 添加或删除 HTML dom元素
  20. [笔记] FMX 移动平台 TWebBrowser 问题

热门文章

  1. 使用PHP对二维索引数组进行排序
  2. jQuery方法区别:click() bind() live() delegate()区别
  3. oss命令使用
  4. python基础数据类型—int、bool、字符串的常用方法
  5. 51Nod 1344 走格子
  6. HDU4651 Partition 【多项式求逆】
  7. Matplotlib学习---用mplot3d画莫比乌斯环(Mobius strip)
  8. django.db.utils.DataError: (1406, "Data too long for column 'gender' at row 1")
  9. 解决nginx发布网站跨目录访问
  10. bzoj2212[Poi2011]Tree Rotations [线段树合并]