图解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参数和作用域的使用
Nov 01 Python
进一步了解Python中的XML 工具
Apr 13 Python
Python二分查找详解
Sep 13 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
python实现无边框进度条的实例代码
Dec 30 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
python表格存取的方法
2018/03/07 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
python调用java的jar包方法
2018/12/15 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
Django-imagekit的使用详解
2020/07/06 Python
详解Python yaml模块
2020/09/23 Python
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
C面试题
2015/10/08 面试题
药物学专业学生的自我评价
2013/10/27 职场文书
2014年端午节活动方案
2014/03/11 职场文书
股权投资意向书
2014/04/01 职场文书
论文诚信承诺书
2014/05/23 职场文书
售后客服工作职责
2014/06/16 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
联谊活动总结范文
2015/05/09 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python