文档章节

Python 深copy和浅copy

 雪地花露
发布于 2016/08/30 16:21
字数 559
阅读 19
收藏 1

浅copy 所谓“浅拷贝”,是指创建一个新的对象,其内容是原对象中元素的引用。(拷贝组合对象,不拷贝子对象)个人理解,关键是根据子元素的指向地址是否一样来判断

注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。 常见的浅拷贝有:切片操作、工厂函数、对象的copy()方法、copy模块中的copy函数。 深copy 所谓“深拷贝”,是指创建一个新的对象,然后递归的拷贝原对象所包含的子对象。深拷贝出来的对象与原对象没有任何关联。 注意如果子元素是不可变对象时,深copy对象的子元素所对应的指向地址会和原对象子元素一样 但是相互独立的, 下面的这个例子中子元素是可变的对象

import copy a = [[1, 2],[5, 6], [8, 9]] b = copy.copy(a) # 浅拷贝得到b c = copy.deepcopy(a) # 深拷贝得到c 深拷贝只有一种方式:copy模块中的deepcopy函数。 import copy a = [1, 2, 3] b = copy.deepcopy(a) print(id(a), id(b)) 140601785065840 140601785066200 总结:

1、赋值:简单地拷贝对象的引用,两个对象的id相同。 2、浅拷贝:创建一个新的组合对象,这个新对象与原对象共享内存中的子对象。 3、深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。

浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。

© 著作权归作者所有

共有 人打赏支持
粉丝 6
博文 63
码字总数 35264
作品 0
朝阳
系统管理员
理解 Python 引用、浅拷贝和深拷贝

在阐述引用、浅拷贝和深拷贝前,首先需要要了解 Python 的世界里,一切皆对象,每个对象各包含一个 idendity、type 和 value。 引用(Reference) 浅拷贝(Shallow copy) 深拷贝(Deep copy) Ref...

koala bear
2013/08/16
0
0
Python动态类型的学习---引用的理解

一,Python浅拷贝和深拷贝 浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。这里有个例子 >>> aList=[[1, 2...

herlang
2013/04/10
0
0
python编程之赋值和拷贝的区别概述及操作excel数据库(图)

python编程之赋值和拷贝的区别概述及操作excel数据库(图) 一、赋值 在Python中,对象的赋值就是简单的对象引用,这点和C++不同,如下所示: a = [1,2,”hello”,[‘python’, ‘C++’]] b ...

原创小博客
08/29
0
0
[Python]什么是浅拷贝,深拷贝

浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。这里有个例子 >>> aList=[[1, 2], 3, 4] >>> bList = aList...

索隆
2012/04/22
0
0
最常见的 35 个 Python 面试题及答案(2018 版)

雷锋网按:本文为 AI 研习社编译的技术博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team。 翻译 | 于志鹏 整理 | 凡江 1. Python 面试问题及答案 ...

雷锋字幕组
08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
47分钟前
1
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
1
0
OSChina 周四乱弹 —— 上帝对我单身年限的惩罚越来越长了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享张卫健的单曲《身体健康》 《身体健康》- 张卫健 手机党少年们想听歌,请使劲儿戳(这里) 昨天是重阳节咯, 可惜小小编辑总是晚...

小小编辑
今天
12
1
django rest framework 外键序列化方法与问题总结

django rest framework 外键序列化方法与问题总结 当借口中需要出现一对多关系的时候,我们可以用rest_framwork的序列化功能来处理,代码如下. # models.pyfrom django.db import modelscl...

_Change_
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部