1、赋值:

1 list_1=[['a','b'],1,2]
2 list_2=list_1
3
4 print(list_1)
5 print(list_2)>>>[['a', 'b'], 1, 2]
>>>[['a', 'b'], 1, 2]

在python3中赋值操作其实就是对象的应用,如上边的例子list_1与list_2这俩变量指向的都是同一块内存地址,也就是说list_2并没有重新开辟一块属于自己内存空间。

(通过id( )函数可以查看对象的内存地址)

1 print(id(list_1))
2 print(id(list_2))

>>>1656445373192>>>1656445373192

共同指向同一个内存地址(1656445373192),如果把这块内存空间看成一个房间的话,那就是给这个房间找了两个主人,房间里的所有东西属于两人的公共财产,同进退,共生死!

 1 list_1=[['a','b'],1,2]
 2 list_2=list_1
 3
 4 list_2[0][0]="aaa"
 5 list_1[2]=222
 6
 7 print(list_1)
 8 print(list_2)
 >>>[['aaa', 'b'], 1, 222] >>>[['aaa', 'b'], 1, 222]
10 del list_1   #deL函数只能删除变量名,对内存地址不做操作
11 print(list_2)>>>[['aaa', 'b'], 1, 222]

11 list_2.clear() #clear()函数不删除变量名,但会清除对应的内存空间12 print(list_1)>>>[]

2、浅拷贝

1 list_1=[['a','b'],1,2]
2
3 #浅拷贝的三种形式,结果是一样的
4 list_2=list_1.copy()
5 list_2=list_1[:]
6
7 import  copy
8 list_2=copy.copy(list_1)

浅拷贝之所以称为浅拷贝,是它仅仅只拷贝了一层

1 list_1=[['a','b'],1,2]
2 list_2=list_1.copy()
3
4 list_2[0][0]="aaa"
5 list_2[2]=222
6 print(list_1)
7 print(list_2)>>>[['aaa', 'b'], 1, 2]>>>[['aaa', 'b'], 1, 222]

如图所说:list_2=list_1.copy() 其实等于 list_2=[[000123],1,2]。也就是说只有小列表中的元素是两人的公共财产(好比俩人的孩子),1和2 赋予各自的私有财产。

3、深拷贝

 1 list_1=[['a','b'],1,2]
 2
 3 import copy
 4 list_2=copy.deepcopy(list_1)
 5
 6 list_2[0][0]="aaa"
 7 list_2[2]=222
 8
 9 print(list_1)
10 print(list_2)>>>[['a', 'b'], 1, 2]>>>[['aaa', 'b'], 1, 222]

深拷贝就比较直接了,就是很单纯的很粗暴的克隆一份数据出来自己玩,自己想咋作就咋作,跟别人无关。

4、拷贝的警告  

  1、对于非容器类型,如数字,字符,以及其它“原子”类型,没有拷贝一说。产生的都是原对象的引用。

  2、如果元组变量值包含原子类型对象,即使采用了深拷贝,也只能得到浅拷贝。

转载于:https://www.cnblogs.com/Adairye/p/8570929.html

python_深浅拷贝相关推荐

  1. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...

  2. python——赋值与深浅拷贝

    结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来 ...

  3. python之深浅拷贝

    对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # ######### 数字.字符串 ######### n1 = 123 # n1 ...

  4. Java中深浅拷贝之List

    List的浅拷贝 浅拷贝将引用复制.指向的是同一个地址,改变A和B中的任何一个,另一个都会随之发生变化. List浅拷贝(针对List里 装的是对象-----"引用"[基础类型不分 ...

  5. Python的深浅拷贝讲解!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约3000字,建 ...

  6. 【Python基础】Python的深浅拷贝讲解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中 ...

  7. 是时候捋一捋Java的深浅拷贝了

    在开发.刷题.面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝.拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的! 在对象的拷贝中,很多初学者可能搞不清到 ...

  8. set集合, 深浅拷贝, join, 列表和字典在循环中删除元素的问题, fromkeys( , )

    一. set集合 空集合 a = set() set集合内的元素必须可哈希(不可变), int, str, bool, tuple set3 = {'1','alex',2,True,(1,2,[2, ...

  9. 编码,深浅拷贝和文件操作

    三.再谈编码 小数据池,  常量池, id() 查看变量的内存地址 is和== is 判断内存地址是否一致 == 判断内容是否一致 小数据池的作用: 为了快速的创建字符串对象, 可以减少内存的浪费 用 ...

最新文章

  1. 【 C 】队列的链式存储实现
  2. 解决python安装第三方库速度很慢的问题(opencv为例)
  3. synchronized()_这篇文章带你彻底理解synchronized关键字
  4. python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...
  5. 并发编程之 Semaphore 源码分析
  6. Docker---问题1:bash: vi: command not found/bash: vim: command not found
  7. 我是如何使用git把本地代码上传到CODECHINA上的,值得借鉴
  8. 产品经理如何晋升为产品总监
  9. 玩转LiteOS组件:玩转Librws
  10. 考研政治——选择题判断原则
  11. 为什么我花了三个半月准备的面试还是砸了?附 iOS 开发者求职攻略
  12. C++之模块对于 SAFESEH 映像是不安全的
  13. R语言爱好者必备——R语言速查表(高清版可下载)
  14. DM6437 GPIO模拟I2C
  15. 罗振宇《时间的朋友2018》跨年演讲全文
  16. 迪文屏幕ttl转232选择
  17. OpenGL(五)立体图形
  18. qpython2_QPython
  19. 手机python3.0编程软件-QPython3手机版下载
  20. 形容计算机老师风采的句子,形容教师的优美句子

热门文章

  1. 2017.3.20上午
  2. opencv vs2013开发环境配置
  3. union 与 union all 及其他并集操作说明
  4. eclipse通过classpath variable引用类库
  5. SQL2000中因为选定的用户拥有对象,所以无法除去该用户.
  6. 2011/5/18工作笔记
  7. VC#2005 Starter Kit: Screen Saver 使用介绍
  8. [导入]LAMP架构下安装Drupal
  9. linux c程序中获取shell脚本输出
  10. 【拔刀吧少年】之循环三兄弟for while until