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 collections模块实例讲解
Apr 07 Python
python简单程序读取串口信息的方法
Mar 13 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
用matplotlib画等高线图详解
Dec 14 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
python xpath获取页面注释的方法
Jan 14 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
python操作redis数据库的三种方法
Sep 10 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
4种非常实用的python内置数据结构
Apr 28 Python
如何利用python实现Simhash算法
Jun 28 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
ftp类(myftp.php)
2006/10/09 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
个人找工作自荐信格式
2013/09/21 职场文书
科研课题实施方案
2014/03/18 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书