图解Python中深浅copy(通俗易懂)


Posted in Python onSeptember 03, 2020

一、深浅copy

赋值运算

l1 = [1, 2, 3, [22, 33]]
l2 = l1
l1.append(666)

print(l1) # [1, 2, 3, [22, 33], 666]
print(l2) # [1, 2, 3, [22, 33], 666]

图解:

图解Python中深浅copy(通俗易懂)

注意:l2 = l1是一个指向,是赋值,和深浅copy无关。

浅copy

其实列表是一个一个的槽位,每个槽位存储的是该对象的内存地址

例1. 给大列表添加元素
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
# 或者下面这种方式,也是浅copy
# import copy
# l2 = copy.copy(l1)
l1.append(666)

print(l1) # [1, 2, 3, [22, 33], 666]
print(l2) # [1, 2, 3, [22, 33]]

例2. 给小列表添加元素
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
l1[-1].append(666)

print(l1) # [1, 2, 3, [22, 33, 666]]
print(l2) # [1, 2, 3, [22, 33, 666]]、

例3. 将l1列表中第一个元素改为6
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
l1[0] = 6

print(l1) # [6, 2, 3, [22, 33]]
print(l2) # [1, 2, 3, [22, 33]]

图解:

例1

图解Python中深浅copy(通俗易懂)

例2

图解Python中深浅copy(通俗易懂)

例3

图解Python中深浅copy(通俗易懂)

总结:

浅copy:会在内存中新开辟一个空间,存放这个copy的列表,但是列表里面的内容还是沿用之前对象的内存地址。

注意:

切片中,如果是全切,属于浅copy。

深copy

import copy
l1 = [1, 2, 3, [22, 33]]
l2 = copy.deepcopy(l1)
l1.append(666)
print(l1) # [1, 2, 3, [22, 33], 666]
print(l2) # [1, 2, 3, [22, 33]]

图解:

本质如下图:

图解Python中深浅copy(通俗易懂)

但是python对深copy做了一个优化,将可变的数据类型在内存中重新创建一份,而不可变的数据类型则沿用之前的,所以内存中是下面这样的:

图解Python中深浅copy(通俗易懂)

总结:

深copy:会在内存中开辟新空间,将原列表以及列表里面的可变数据类型重新创建一份,不可变数据类型则沿用之前的。

到此这篇关于图解Python中深浅copy(通俗易懂)的文章就介绍到这了,更多相关Python 深浅拷贝内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现红包裂变算法
Feb 16 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
Tensorflow之Saver的用法详解
Apr 23 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python实现BP神经网络回归预测模型
Aug 09 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
python简单实现9宫格图片实例
Sep 03 #Python
django使用graphql的实例
Sep 02 #Python
django数据模型中null和blank的区别说明
Sep 02 #Python
sqlalchemy实现时间列自动更新教程
Sep 02 #Python
解决Python 函数声明先后顺序出现的问题
Sep 02 #Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 #Python
详解python with 上下文管理器
Sep 02 #Python
You might like
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP培训要多少钱
2017/06/06 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python读写zip压缩文件的方法
2018/08/29 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
python实现淘宝购物系统
2019/10/25 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
中央空调节能方案
2014/06/15 职场文书
岗位说明书标准范本
2014/07/30 职场文书
综治维稳工作汇报
2014/10/27 职场文书
五好家庭申报材料
2014/12/20 职场文书
2015年护士节活动总结
2015/02/10 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
2016年教师新年寄语
2015/08/18 职场文书
2019秋季运动会口号
2019/06/25 职场文书