【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

今天工作中遇到了深拷贝和浅拷贝的问题,特地记录一下,以前我们写python代码的时候是这样的,

feixiaoxingdeMacBook-Pro-4:~ feixiaoxing$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:34)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a=2
>>> b=a
>>> b=1
>>> print a
2
>>> 

如果只是单纯的数据,拷贝的时候基本都是深拷贝,但是遇到了数组或者字典就不行了,如下所示,

feixiaoxingdeMacBook-Pro-4:~ feixiaoxing$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:34)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[1,2,3,4,5,6]
>>> b=a
>>> b[0]=10
>>> print a
[10, 2, 3, 4, 5, 6]
>>> 

通过实验,我们发现即使a赋值给了b,一旦b对数据发生了修改,a也会跟着修改。可见,a和b其实指向的是同一块内存。那有什么办法解决呢,其实python已经准备好了一个copy库,

feixiaoxingdeMacBook-Pro-4:~ feixiaoxing$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:34)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[1,2,3,4,5]
>>> import copy
>>> b=copy.deepcopy(a)
>>> print b
[1, 2, 3, 4, 5]
>>> b[0]=100
>>> print a
[1, 2, 3, 4, 5]
>>> 

如果希望数据为深拷贝,只需要引用copy这个库就可以了。

python编程(深拷贝和浅拷贝)相关推荐

  1. Python中深拷贝与浅拷贝的区别?

    往期面试题: 列举Python中的标准异常类? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三类? 废话不多说,开始今天的题目: 问:说说Pyt ...

  2. 【从零学Python】深拷贝和浅拷贝、二维数组初始化

    Python 的深拷贝和浅拷贝 直接赋值: 其实就是对象的引用(别名). 浅拷贝(copy): 拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcop ...

  3. python篇 深拷贝与浅拷贝

    本章目录 1.拷贝概念 1.2 相关知识点 2.浅拷贝概念 3.浅拷贝演示 4.深拷贝概念 5.深拷贝演示 1.拷贝概念 如果各位捧场的读者老爷对python中''is''和''==''运算符的概念如 ...

  4. python中深拷贝与浅拷贝的区别

    ####################python中的数据类型####################### ##########python中的数据类型有6种,分别为:数字类型如int,float ...

  5. python的深拷贝与浅拷贝

    对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量. 并不是复制⼀份内容. 两个变量的内容其实为一个地址,如果要在复制的同时分配新的地址则需要用到深拷贝和浅拷贝的命令 ls ...

  6. python中深拷贝和浅拷贝_**Python中的深拷贝和浅拷贝详解

    甚至连type其本身都是对象,type对象 Python中变量与C/C++/Java中不同,它是指对象的引用,Python是动态类型,程序运行时候,会根据对象的类型 来确认变量到底是什么类型. 单独赋 ...

  7. Python基础——深拷贝、浅拷贝

    文章目录 1.前言 2.变量的地址(id) 3.浅拷贝(copy.copy) 4.深拷贝(copy.deepcopy) 1.前言 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用 ...

  8. 【python】深拷贝、浅拷贝和赋值之间有什么区别?

    首先Python提供了三种赋值方法,最常见的是赋值=.浅拷贝copy.copy()和深拷贝copy.deepcopy(). 赋值是使用等于号(=),可以对一个变量进行赋值,赋值就是创建了对象的一个新的 ...

  9. 浅析Python中深拷贝和浅拷贝

    按照以下不同情况,在IDE中逐个解除注释,就明白了 import copy""" 第一种情况,不可变类型变量,都是引用 """ # a = ...

  10. python的深拷贝和浅拷贝

    深浅拷贝 深拷贝:嵌套的可变数据类型重新开辟一块新的内存空间. 需要导入copy模块 Import copy copy.deepcopy() import copy name_list=['zs',' ...

最新文章

  1. django之全文检索
  2. nginx的list数据结构
  3. Training a classifier
  4. 大工13秋《计算机文化基础》在线测试1,大工13秋《计算机文化基础》辅导资料六...
  5. 安装提示没有安装包docker(转载)
  6. python视频教程-Python视频教程
  7. Java和jsp编程中应该注意的几个常见问题
  8. 《线性代数》 李炯生\查建国\王新茂 中国科学技术大学 第2版 部分习题答案
  9. visio箭头尾部遮盖方框边线
  10. 局域网设置_如何设置局域网
  11. 周志明:终于薅住了这位 “社恐”作者的小辫子
  12. 用计算机和电视机组成家庭影院,用电脑组建家庭影院:  最方便最实惠的玩法...
  13. Linux显示2015年日历表
  14. 基于 WT2003H0语音芯片在扫地机/智能桌游等产品更换语音bin应用设计方案介绍
  15. 微信小程序开发之获取用户信息
  16. java常见单词汇总3(非常使用哦)
  17. VS C++学习笔记
  18. 名词解释:失压、全失压、断相、失流、掉电(DL645-2007)
  19. IDEA自动把数据库表映射为实体类
  20. fama matlab源码_Fama French (1996)3因子模型 论文数据及matlab程序

热门文章

  1. iOS开发基础:OC数组对象NSArray的常用方法
  2. zoj 3211 - Dream City
  3. 使用python脚本将XML 电子表格转变为Excel
  4. Apache Drill学习
  5. php __FILE__ __DIR__魔术常量的使用【PHP进阶教程】
  6. 写一个centos字符界面下的电量显示脚本
  7. SOCK开发之---TCP/IP简介
  8. excel 异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
  9. 使用Postman测试https接口时的小问题记录
  10. 【LOJ#6036】[雅礼集训2017Day4]编码