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

看两段代码:

元组:

#!/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]]

python 中深拷贝和浅拷贝的区别的更多相关文章

  1. Python中深拷贝与浅拷贝的区别

    转自:http://blog.csdn.net/u014745194/article/details/70271868 定义: 在Python中对象的赋值其实就是对象的引用.当创建一个对象,把它赋值给 ...

  2. python 中 深拷贝和浅拷贝的理解

    在总结 python 对象和引用的时候,想到其实 对于python的深拷贝和浅拷贝也可以很好对其的进行理解. 在python中,对象的赋值的其实就是对象的引用.也就是说,当创建一个对象,然后赋给另外一 ...

  3. python中深拷贝和浅拷贝

    python中所谓浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝. 首先,对赋值操作我们要有以下认识: 赋值是将一个对象的地址赋值给一个变量,让变量指向该地址( 旧瓶装旧酒 ). 修改不可变 ...

  4. python中深拷贝与浅拷贝

    # 1.浅拷贝(复制东西)a = [11,22,33] # 实际上是浅拷贝# 没有把这个变量的值赋进去,而是把另一个变量的地址拿过去了,就叫浅拷贝.b = a # print(id(a))# prin ...

  5. Python中深拷贝与浅拷贝区别

    浅拷贝, list值是可变的,str值不可变,只能重新赋值 a=b=c='wjx'print(a,b,c)c= 'jmy'#重新赋值了,所以内存分配了新的地址print(a,b,c)print(id( ...

  6. 关于Python中深拷贝与浅拷贝的理解(一)---概念

    import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 d = copy. ...

  7. Python 深拷贝和浅拷贝的区别

    python的复制,深拷贝和浅拷贝的区别    在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用  ...

  8. Python中type与Object的区别

    Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: clas ...

  9. Python中生成器和迭代器的区别(代码在Python3.5下测试):

    https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...

随机推荐

  1. 使用kubeadm安装kubenetes

    一.环境 关闭防火墙和selinux 禁用swap master节点安装 #1.配置源 cd /etc/yum.repos.d/wget https://mirrors.aliyun.com/dock ...

  2. 阿里p3c(代码规范,eclipse插件、模版,idea插件)

    阿里p3c 一.说明 代码规范检查插件p3c,是根据<阿里巴巴Java开发手册>转化而成的自动化插件. (高级黑:P-3C“Orion”,反潜巡逻机,阿里大概取p3c先进,监测,发现潜在问 ...

  3. python数据结构与算法第九天【选择排序】

    1.选择排序的原理 2.代码实现 def selection_sort(alist): n = len(alist) # 需要进行n-1次选择操作 for i in range(n-1): # 记录最 ...

  4. Spring MVC 使用介绍(三)—— Controller接口控制器

    一.概述 Controller接口类图如下,其中,BaseCommandController已从Spring 4移除 基于继承Controller接口的方式已经不推荐使用,仅供学习参考 二.基于Con ...

  5. java代码自动下载Spring Boot用户手册

    本示例演示Spring Boot 1.5.9.RELEASE版本的用户手册下载 pom.xml <?xml version="1.0" encoding="UTF- ...

  6. AHOI(十二省联考)2019 退役记

    我也想退役失败.jpg Day 0 我才知道联考原来是4.5h? 下午居然还有讲题,感觉变得正规多了. 试机敲了LCT,NTT,SA,加起来花了大概40min,基本1A,感觉海星.键盘似乎有点过于灵敏 ...

  7. Android app下载并安装

    1  下载功能 //下载apk private void downloadApk(String apkUrl) throws PackageManager.NameNotFoundException ...

  8. codeforces1093G Multidimensional Queries 【线段树】

    题目分析: 搜索2^k种情况,线段树分别处理就行了,正确性明显. 代码: #include<bits/stdc++.h> using namespace std; ; int n,k; ] ...

  9. Codeforces543 B. Destroying Roads

    传送门:>Here< 题意:给出一张无向图(边权为1),并给出两对起点和终点以及距离:s1,t1,l1; s2,t2,l2; 要求删除尽量多的边,使得dis(s1,t1)<=l1, ...

  10. monkey测试的脚本

    monkey测试脚本编写思路: 配置文件: 1.测试安装包路径 2.执行monkey脚本的次数 3.执行monkey的点击数 4.包名 读取配置文件: 1.配置文件有一个section 2.读取配置文 ...