# 1.浅拷贝(复制东西)
a = [11,22,33]

# 实际上是浅拷贝
# 没有把这个变量的值赋进去,而是把另一个变量的地址拿过去了,就叫浅拷贝。
b = a

# print(id(a))
# print(id(b))

# 什么是深拷贝
import copy
c = copy.deepcopy(a) # 深拷贝

print(id(a))
print(id(c))

a.append(44)
print(a)
print(b)
print(c)

# 深拷贝和浅拷贝
aa = [11,22,33]
bb = [44,55,66]

c = [a,b]

# deepcopy深度识别

'''
>>> a = [11,22,33]
>>> b = [44,55,66]
>>> c = [a,b]
>>> c
[[11, 22, 33], [44, 55, 66]]
>>> d = c
>>> d
[[11, 22, 33], [44, 55, 66]]
>>> id(d)
2711060056904
>>> id(c)
2711060056904
>>> import copy
>>> e = copy.deepcopy(c)
>>> id(e)
2711060078984
>>> id(e[0])
2711060056968
>>> id(a)
2711060055432
>>> a.append(44)
>>> e
[[11, 22, 33], [44, 55, 66]]
>>> c
[[11, 22, 33, 44], [44, 55, 66]]
>>>
'''

# 对于列表
# copy.copy copy只能识别第一层
'''
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [a,b]
>>> e = copy.copy(c)
>>> e
[[1, 2, 3], [4, 5, 6]]
>>> a.append(4)
>>> e
[[1, 2, 3, 4], [4, 5, 6]]
>>> c
[[1, 2, 3, 4], [4, 5, 6]]
>>>
'''

# 对于元组

# copy.copy 如果是不可变类型,就不深拷贝,如果是可变类型,就只能拷贝一层
# >>> a = [1,2,3]
# >>> b = [4,5,6]
# >>> c = (a,b)
# >>> e = copy.copy(c)
# >>> id(c)
# 2711060057352
# >>> id(e)
# 2711060057352
# >>>

# 使用copy模块的copy会根据当前的拷贝的数据类型是可变类型还是不可变类型存在的不同的处理方式

python中深拷贝与浅拷贝的更多相关文章

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

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

  2. python中深拷贝和浅拷贝

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

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

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

  4. python 中深拷贝和浅拷贝的区别

    通俗的理解,浅就是外面,深就是里面.浅拷贝的意思就是只拷贝外面的一层,深拷贝就是拷贝的里面的所有. 看两段代码: 元组: #!/usr/bin/env/python # -*-coding:utf-8 ...

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

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

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

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

  7. 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

    当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...

  8. 图解python中赋值、浅拷贝、深拷贝的区别

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果.下面本文就通过简单的例子介绍一下这些概念之间的差别. 对象赋值 直接看一段代码: will = ...

  9. Python中赋值、浅拷贝与深拷贝

    python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

随机推荐

  1. webrtc学习笔记

    获取笔记本摄像头视频流 <html> <meta http-equiv="Content-Type" content="text/html; chars ...

  2. CMakeLists 链接库相关指令

    set(LSTAR_DIR "$ENV{HOME}/LStar_build") include_directories(${LSTAR_DIR}) LINK_DIRECTORIES ...

  3. git与eclipse集成之添加.gitignore文件

    1.1. 添加.gitignore文件 .gitignore 配置文件用于配置不需要加入版本管理的文件 1.以斜杠/开头表示目录: 2.以星号*通配多个字符: 3.以问号?通配单个字符 4.以方括号[ ...

  4. nginx 负载 问题

    1 如果使用ip_hash,nginx必须为最前端负载均衡,如果大网环境部署,基本无法实现,内网还可以使用 2 如果不使用ip_hash,则要考虑session问题,可以使用memcached与tom ...

  5. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  6. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  7. python学习第16天。

    内置函数是在原本已经有的序列的基础上,再生成新的. List的方是修改原列表. 内置函数中大部分函数的返回值大部分都是迭代器.生成器. Sorted需要遍历操作,不是单纯的迭代,所以不生成迭代器. 一 ...

  8. 【原创】大叔经验分享(31)CM金丝雀Canary报错

    CM金丝雀Canary报错 1 HDFS 金丝雀Canary 测试无法为 /tmp/.cloudera_health_monitoring_canary_files 创建父目录. 2 Hive Met ...

  9. python-包及日志模块使用

    一.包 1.包就是一个保护有__init__.py文件的文件夹,包的本质就是一种模块,即包是用来导入使用的,包内部包含的文件也都是用来被导入使用的.包是为了更好组织好模块,就是一个文件夹. 注:在py ...

  10. linux命令排序

    sort -k1 -n 第一列按数字正排序 sort -K1 -rn 第一列按数字倒排序