Python直接赋值、浅拷贝与深度拷贝实例分析


Posted in Python onJune 18, 2019

本文实例讲述了Python直接赋值、浅拷贝与深度拷贝。分享给大家供大家参考,具体如下:

  • 直接赋值:其实就是对象的引用(别名)。
  • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

字典浅拷贝实例

实例

>>>a = {1: [1,2,3]}
>>> b = a.copy()
>>> a, b
({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a, b
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷贝需要引入 copy 模块:

实例

>>>import copy
>>> c = copy.deepcopy(a)
>>> a, c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

解析

1、b = a: 赋值引用,a 和 b 都指向同一个对象。

Python直接赋值、浅拷贝与深度拷贝实例分析

2、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

Python直接赋值、浅拷贝与深度拷贝实例分析

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

Python直接赋值、浅拷贝与深度拷贝实例分析

更多实例

以下实例是使用 copy 模块的 copy.copy( 浅拷贝 )和(copy.deepcopy ):

实例

#!/usr/bin/python
# -*-coding:utf-8 -*-
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a            #赋值,传对象的引用
c = copy.copy(a)      #对象拷贝,浅拷贝
d = copy.deepcopy(a)    #对象拷贝,深拷贝
a.append(5)         #修改对象a
a[4].append('c')      #修改对象a中的['a', 'b']数组对象
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

以上实例执行输出结果为:

('a = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
('b = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
('c = ', [1, 2, 3, 4, ['a', 'b', 'c']])
('d = ', [1, 2, 3, 4, ['a', 'b']])

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 解析html之BeautifulSoup
Jul 07 Python
python 生成不重复的随机数的代码
May 15 Python
Python实现的快速排序算法详解
Aug 01 Python
tensorflow获取变量维度信息
Mar 10 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
Dec 25 Python
python实现连连看游戏
Feb 14 Python
python 双循环遍历list 变量判断代码
May 04 Python
Python字符串格式化f-string多种功能实现
May 07 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 Python
python实现五子棋游戏
Jun 18 #Python
解决python中使用PYQT时中文乱码问题
Jun 17 #Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 #Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 #Python
python3.6根据m3u8下载mp4视频
Jun 17 #Python
python如何实现视频转代码视频
Jun 17 #Python
python批量爬取下载抖音视频
Jun 17 #Python
You might like
MySql中正则表达式的使用方法描述
2008/07/30 PHP
关于php fread()使用技巧
2010/01/22 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
详解Python的Django框架中的模版相关知识
2015/07/15 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
windows下python安装pip图文教程
2018/05/25 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
高中运动会前导词
2015/07/20 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
python基础之while循环语句的使用
2021/04/20 Python
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
python开发制作好看的时钟效果
2022/05/02 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers