python基础(6)-深浅拷贝
赋值
字符串和数字
# id()函数可以获取变量在内存中的地址标识 num1 = 2; num2 = 2; print(id(num1)) # result:8791124202560 print(id(num2)) # result:8791124202560 str1 = ' str2 = ' print(id(str1)) # result:39986040 print(id(str2)) # result:39986040
结论:对于数字和字符串来说,赋值时如果有相同的值在python管理的内存中,python内部会把这个值的引用(地址)指向被赋值的变量
列表&字典&元组
from copy import * list1 = [1, {'a': 1, 'b': 2}, ('a', 'b', 'c')] list2 = list1 #列表 print(id(list1)) # result:30433928 print(id(list2)) # result:30433928 #字典 print(id(list1[1])) # result:31017792 print(id(list2[1])) # result:31017792 #元组 print(id(list1[2])) # result:35446576 print(id(list1[2])) # result:35446576
结论:对于赋值,列表,字典,元组用的都是同一块地址
浅拷贝
字符串和数字
from copy import * str1 = ' str2 = copy(str1) # 使用copy模块里的copy()函数进行浅拷贝 print(id(str1)) # result:31204496 print(id(str2)) # result:31204496 num1 = 3 num2 = copy(num1) print(id(num1)) # rsult:8791078065248 print(id(num2)) # rsult:8791078065248
结论:数字和字符串的浅拷贝,与赋值相同,在内存当中用的也是同一个地址
列表&字典&元组
from copy import * list1 = [1, {'a': 1, 'b': 2}, ('a', 'b', 'c')] list2 = copy(list1) # 列表 print(id(list1)) # result:42354568 print(id(list2)) # result:42227400 # 字典 print(id(list1[1])) # result:30952256 print(id(list2[1])) # result:30952256 # 元组 print(id(list1[2])) # result:41082600 print(id(list2[2])) # result:41082600 tuple1 = (1, {'a': 1, 'b': 2}, ['a', 'b', 'c']) tuple2 = copy(tuple1) # 元组 print(id(tuple1)) # result:35668112 print(id(tuple2)) # result:35668112 # 字典 print(id(tuple1[1])) # result:30821256 print(id(tuple2[1])) # result:30821256 # 列表 print(id(tuple1[2])) # result:35862792 print(id(tuple2[2])) # result:35862792
结论:对于列表和字典,浅拷贝会拷贝第一层引用(但最外层是元组时,不会拷贝).
深拷贝
字符串和数字
from copy import * str1 = ' str2 = deepcopy(str1) # 使用copy模块里的copy()函数进行浅拷贝 print(id(str1)) # result:31269752 print(id(str2)) # result:31269752 num1 = 3 num2 = deepcopy(num1) print(id(num1)) # rsult:8791074002016 print(id(num2)) # rsult:8791074002016
结论:无论是赋值或是浅拷贝亦或是深拷贝,字符串和数字都是用同一个地址
列表&字典&元组
from copy import * list1 = [1, {'a': 1, 'b': 2}, [1, 2, 3], ('a', 'b', 'c')] list2 = deepcopy(list1) # 外层列表 print(id(list1)) # result:32134984 print(id(list2)) # result:32133768 # 字典 print(id(list1[1])) # result:4410176 print(id(list2[1])) # result:31862720 # 列表 print(id(list1[2])) # result:32262088 print(id(list2[2])) # result:32262408 # 元组 print(id(list1[3])) # result:32038704 print(id(list2[3])) # result:32038704
结论:深拷贝会对列表和字典进行拷贝,但对于元组,深浅拷贝都会失效.
python基础(6)-深浅拷贝的更多相关文章
- python 基础之深浅拷贝
深浅拷贝 s=[[1,2],'fgfgf','cx'] s3=s.copy() print(s) print(s3) 测试 D:\python\python.exe D:/untitled/dir/f ...
- Python基础:深浅拷贝
对于数字.字符串深浅拷贝: import copy num = 0 copy_num = copy.copy(num) print("These are normal copy") ...
- 第五篇python进阶之深浅拷贝
目录 第五篇python进阶之深浅拷贝 一.引言 1.1可变 和不可变 二.拷贝(只针对可变数据类型) 三.浅拷贝 四.深拷贝 第五篇python进阶之深浅拷贝 一.引言 1.1可变 和不可变 id不 ...
- 天啦噜!仅仅5张图,彻底搞懂Python中的深浅拷贝
Python中的深浅拷贝 在讲深浅拷贝之前,我们先重温一下 is 和==的区别. 在判断对象是否相等比较的时候我们可以用is 和 == is:比较两个对象的引用是否相同,即 它们的id 是否一样 == ...
- Python 中的深浅拷贝
Python 中的深浅拷贝 参考文献:https://blog.csdn.net/lnotime/article/details/81194633 参考文献:https://blog.csdn.net ...
- Python基础【3】:Python中的深浅拷贝解析
深浅拷贝 在研究Python的深浅拷贝区别前需要先弄清楚以下的一些基础概念: 变量--引用--对象(可变对象,不可变对象) 切片(序列化对象)--拷贝(深拷贝,浅拷贝) 我是铺垫~ 一.[变量--引用 ...
- python——赋值与深浅拷贝
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)
深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...
- Python中的深浅拷贝
1.什么是深浅拷贝? python中一切皆对象,python中的数字.字符串.元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的 ...
随机推荐
- matplotlib绘图不显示问题解决plt.show()
最近在看<Python数据分析>这本书,而自己写代码一直用的是Pycharm,在练习的时候就碰到了plot()绘图不能显示出来的问题.网上翻了一下找到知乎上一篇回答,试了一下好像不行,而且 ...
- kafka调试工具kafkacat的使用
一. 安装 kafkacat 是基于kafka C语言的librdkafka库的 kafka客户端,不依赖java,小巧轻便,支持主流系统.在高版本的debain.Ubuntu下可以直接apt-get ...
- JSP之开发环境搭建
1.下载JDK1.8(或JDK1.7),并进行安装和配置,主要是配置环境变量JAVA_HOME及Path. 2.下载并配置Tomcat8.0(或Tomcat7.0). Windows平台请下载Tomc ...
- 消息中间件系列三:使用RabbitMq原生Java客户端进行消息通信(消费者(接收方)自动确认模式、消费者(接收方)自行确认模式、生产者(发送方)确认模式)
准备工作: 1)安装RabbitMQ,参考文章:消息中间件系列二:RabbitMQ入门(基本概念.RabbitMQ的安装和运行) 2.)分别新建名为OriginalRabbitMQProducer和O ...
- struts与servlet共存
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2 ...
- oneNote2016代码高亮插件
下载地址:https://github.com/elvirbrk/NoteHighlight2016/releases 安装插件前必须安装oneNote笔记. NoteHighlight插件有32位和 ...
- 从零开始搭建Go语言开发环境
一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://gol ...
- 15:CSS3 3D
15:CSS3 3D 什么是3d的场景呢? 2d场景,在屏幕上水平和垂直的交叉线x轴和y轴 3d场景,在垂直于屏幕的方法,相对于3d多出个z轴 Z轴:靠近屏幕的方向是正向,远离屏幕的方向是反向 CSS ...
- 谷歌浏览器(Chrome)禁止浏览器缓存 设置
在开发项目期间用谷歌浏览器调试,他总是缓存我的css样式这个很气人啊,后经过摸索找到了方法,如下 先F12或者shift+ctrl+j 打开调试者工具,在找Network这个tab按钮,点击进入,勾选 ...
- ie9 remove出错 jquery SCRIPT5007: 缺少对象
针对IE11 remove不起作用的问题. 其中IE11.0.37也不支持 IE11.0.42支持可能是由于客户机器设置了兼容模式的原因. 因为里面包含了object元素,移除数据的时候发生的bug. ...