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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python实现提取文章摘要的方法
Apr 21 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
python使用response.read()接收json数据的实例
Dec 19 Python
django如何通过类视图使用装饰器
Jul 24 Python
Python函数参数分类原理详解
May 28 Python
opencv 图像轮廓的实现示例
Jul 08 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Django实现drf搜索过滤和排序过滤
Jun 21 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批量删除超链接的实现方法
2015/10/19 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
php写app用的框架整理
2019/09/29 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
Web开发之JavaScript
2012/03/29 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
Python中列表(list)操作方法汇总
2014/08/18 Python
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
python线性插值解析
2020/07/05 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
几个Shell Script面试题
2014/04/18 面试题
linux比较文件内容的命令是什么
2013/03/04 面试题
法学毕业生自我鉴定
2013/11/08 职场文书
上班上网检讨书
2014/01/29 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
新闻稿标题
2015/07/18 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL