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算法应用实战之栈详解
Feb 04 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
Python实现求一个集合所有子集的示例
May 04 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
详解Python中的type和object
Aug 15 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
pip安装python库的方法总结
Aug 02 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
python的launcher用法知识点总结
Aug 07 Python
Python数据处理的三个实用技巧分享
Apr 01 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
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python读写txt文本文件的操作方法全解析
2016/06/26 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
深入解析神经网络从原理到实现
2019/07/26 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python实现经纬度采样的示例代码
2020/12/10 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
校园活动策划书范文
2014/01/10 职场文书
八一建军节慰问信
2015/02/14 职场文书
预备党员介绍人意见
2015/06/01 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python
Python 匹配文本并在其上一行追加文本
2022/05/11 Python