Python学习---深浅拷贝的学习
浅拷贝copy(): 修改字符串,原来的不变; 更改列表,2个同时修改,以为列表里面还涉及一个指针的索引. 简单讲就是copy()只是简单地copy了第一层,第二层不被copy
深拷贝: 需要单独的copy模块; import copy
字符串的copy()
字符串的copy(): 也是单独开辟空间,新值的更改不影响旧值
name = ['hhh', 'ftl', 'aaa']
name2 = name.copy()
print('name_old:', id(name),name)
name2[0] = 'hello'
print('name_new:', id(name), name)
print('name2:', id(name2), name2)
浅拷贝copy()
浅拷贝copy(): 修改字符串,原来的不变; 更改列表,2个同时修改,以为列表里面还涉及一个指针的索引. 简单讲就是copy()只是简单地copy了第一层引用关系,第二层不被copy
name = [['name', 'hello', 'sex', 'male'], 'hhh', 'ftl', 'aaa']
name3 = name.copy()
print('name_old [原始数据] :', id(name), name)
# 修改第二个字符串,不影响原来
name3[2] = 'hello'
print('name_new[更改字符后]:', id(name), name)
print('name3 [更改字符后]:', id(name3), name3)
# 修改列表后, 新旧一起改变
name3[0][1] = 'world'
print('name_new[更改列表后]:', id(name), name)
print('name3 [更改列表后]:', id(name3), name3)
浅拷贝讲解:
【图转载自】http://www.cnblogs.com/yuanchenqi/articles/5782764.html
深拷贝
深拷贝:等于克隆了一份,需要模块的单独支持
name = ['hhh', 222, [100, 200]]
name2 = copy.deepcopy(name)
print(id(name), id(name2))
print(name, name2)
name2[2][1] = 300
print(id(name[2][1]), id(name2[2][1]))
print(name, name2)
其他补充
查看内存地址:
name = ['hhh', 'ftl', 'aaa']
name_1 = ['hhh', 'ftl', 'aaa']
name[0] = 'good' # 更改name[0]的值
print(id(name), name)
print(id(name_1), name_1)
注解: 字符串本身就是一个类,所以相当于开辟了2个地址空间,所以一个的改变不影响另外一个
关于整型/字符串更改前后的堆栈情况
a = [[1, 2], 3, 4] # a 开辟的是一个整块的内存空间
b = a # 给a 重命名了个名字 b
c = a.copy() # c独自开了个内存空间,而且是只复制一层
print('---------------------------------- C = A.copy() ------------------------------')
print(a, id(a), id(a[0][0]), id(a[1]))
print(c, id(c), id(c[0][0]), id(c[1]))c[0][0] = 9
c[1] = 8
print(a, id(a), id(a[0][0]), id(a[1]))
print(c, id(c), id(c[0][0]), id(c[1]))
print('---------------------------------- A = B ---------------------------------')
print(a, id(a), id(a[0][0]), id(a[1]))
print(b, id(b), id(b[0][0]), id(b[1]))b[0][0] = 9
b[1] = 8
print(a, id(a), id(a[0][0]), id(a[1]))
print(b, id(b), id(b[0][0]), id(b[1]))
转载于:https://www.cnblogs.com/ftl1012/p/9382019.html
Python学习---深浅拷贝的学习相关推荐
- python的深浅拷贝与linux中的软硬链接
记录一下我对python的深浅拷贝以及linux中的软硬链接的理解 放在开头 软硬连接 python中对象的深浅拷贝 浅拷贝 深拷贝 copy.copy()对可变和不可变对象的不同 总结 放在开头 在 ...
- python集合类型应用场景_简述Python的深浅拷贝以及应用场景
原博文 2019-07-16 11:54 − Python的深浅拷贝以及应用场景 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.dee ...
- Python的深浅拷贝讲解!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约3000字,建 ...
- 【Python基础】Python的深浅拷贝讲解
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中 ...
- python之深浅拷贝
对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # ######### 数字.字符串 ######### n1 = 123 # n1 ...
- 【python】深浅拷贝
在python中一切都是对象 print(type(1))print(type("Hello World"))print(type(["A","B&q ...
- day2学python 数据类型+深浅拷贝+循环
数据类型+深浅拷贝+循环 别的语言的数组 python不用定义 直接使用 color=['红','橙','黄','绿','青','蓝','紫']print(color[1:3]) //打印[1,3)的 ...
- Python的深浅拷贝
目录 一.可变对象和不可变对象 二.概念 三.深浅拷贝 1.浅拷贝 2.深拷贝 一.可变对象和不可变对象 可变类型:列表.字典.集合 不可变类型:整数.小数.复数.字符串.元组 二.概念 = 是指向引 ...
- 浅谈python的深浅拷贝
# 浅谈深浅拷贝 >>> dic = {"one":["one1","one2"],"two":{&q ...
最新文章
- pc工具不支持stb的加密方式_如何选择加密狗?九大标准
- Go变量地址值和指针的关系
- struts2配置详解(struts.xml配置详解)
- 简述mysql 存储引擎_Mysql基础-存储引擎简述
- 27个赢得别人欣赏的诀窍
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- Java 并发编程之 Atomic 类
- UI干货素材分享|导航设计
- 开源审计的最佳时机是什么时候?
- Linux下硬盘分区详解
- Qt 定制字体选择 QFontComBobox
- 摄影测量学习总结(较全面易懂)
- Centos7+搜狗拼音输入法 安装不踩雷
- Git使用小记——复制粘贴快捷键的修改
- uniapp返回上一页并刷新数据
- qd怎么玩java_诺基亚NOKIA手机:QD使用方法之菜鸟篇
- 《数据密集型应用系统设计》读书笔记——第二部分 分布式数据系统(一)
- java 工具类命名_给大家详解16个超级实用的Java工具类
- 三种典型电气减压比例阀线性度和短期重复性的对比考核试验
- Zabbix监控整合OneAlert报警平台实现邮件、短信、微信、电话多方式报警
热门文章
- 【王道计组笔记】总线(3):总线仲裁的基本概念
- 解决岛屿类问题(网格)通用解法DFS(附题)
- 【蓝桥杯】题目 1117: K-进制数
- sql查询分析器 只读_DRDS 只读实例来解决复杂 SQL 查询
- 服务器无限关机重启,服务器反复关机重启
- Linux查看安装了哪些软件
- webSphere报错:Error 500: javax.servlet.ServletException: SRVE0207E: Uncaught initialization
- 德鲁伊druid数据库明文密码加密
- 【2021牛客暑期多校训练营5】Jewels(建图,最小匹配权,KM乱搞)
- 计算机信息学中比较大小的代码,信息学奥赛计算机基础知识.doc