【Python 拓展之详解深拷贝和浅拷贝】教程文章相关的互联网学习教程文章

Python之浅拷贝和深拷贝

介绍 如果你学习过别的编程语言,比如java,那么应该知道shallowcopy和deep copy。在Python中,copy也有深浅之分,而且与直接复制各不相同。 用法 1. 浅拷贝 a = {'n':[1,2,3]} b = a.copy() a, b # ({'n': [1, 2, 3]}, {'n': [1, 2, 3]})a['n'].append(4) a, b # ({'n': [1, 2, 3, 4]}, {'n': [1, 2, 3, 4]}) 2. 深拷贝 import copya = {'n':[1,2,3]} b = copy.deeepcopy(a) a, b # ({'n': [1, 2, 3]}, {'n': [1, 2, 3]})a['n'...

python 浅拷贝和深拷贝【图】

一、浅拷贝和深拷贝:浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象 二、示例:

Python中的可变对象与不可变对象、浅拷贝与深拷贝【代码】

Python中的对象分为可变与不可变,有必要了解一下,这会影响到python对象的赋值与拷贝。而拷贝也有深浅之别。 不可变对象 简单说就是某个对象存放在内存中,这块内存中的值是不能改变的,变量指向这块内存,如果要改变变量的值,只能再开辟一块内存,放入新值,再让变量指向新开辟的内存。#定义三个变量 f=22 n=22 z=f print(f=%s,n=%s,z=%s %(f,n,z)) print(f的地址:,id(f))#id用于获取变量内存地址 print(n的地址:,id(n))...

python深拷贝和浅拷贝【图】

is 比较两个引用是否指向同一个对象 == 比较两个对象是否相等>>> a = [1, 2] >>> b = [1, 2] >>> c = a >>> id(a) 140275902517640 >>> id(b) 140275902517960 >>> id(c) 140275902517640 >>> a == b # a、b分别指向的对象值相等 True >>> a is b # a、b分别指向不同的对象 False >>> a is c # a、c指向同一个对象 True深拷贝:复制了引用和内容 浅拷贝: 仅复制了引用,未复制对象# 浅拷贝 a、b指向同一个对象地...

python的浅拷贝,影子拷贝和深拷贝【图】

一 浅拷贝,也叫浅复制,是引用传递。 比如有2个列表,l1=[1,2,3],l2=l1,这就是浅拷贝,他们共同指向同一块内存地址。既然他们指向同一块内存,那么你修改其中一个列表的值,自然另一个列表的值也被修改了。 如果不希望修改一个列表的值导致另一个列表的值也被修改,就不能使用这种l2=l1的赋值操作,需要使用影子拷贝。 二 影子拷贝可以看到两个列表的id不同,说明他们的内存地址是不一样的,那么修改其中一处“照理”来说对另一...

Python_深拷贝和浅拷贝【代码】

深拷贝与浅拷贝import copy v = 123 v1 = copy.copy(v) #浅拷贝 v2 = copy.deepcopy(v) #深拷贝**拷贝只拷贝可变数据类型,浅拷贝只拷贝第一层,深拷贝拷贝所有层 不可变数据类型:int str bool 元组tuple 可变数据类型:列表list 集合set 字典dict# 变量是 int str bool 元组tuple v = “wangxiaobei” v1 = copy.copy(v) #浅拷贝 v2 = copy.deepcopy(v) #深拷贝 print(id(v),id(v1)) print(id(v),id(v2))#2877544721776 28...

Python中浅拷贝和深拷贝的区别总结与理解

单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) # 内存地址相同a = [1,2] # 可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) # 内存地址不相同 单层深拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.deepcopy(a) print(id(a),id(copy_a)) # 内存地址相同a = [1,2] # 可变数据类型 copy_a = copy.deepcopy(a) print(id(a),id(copy_a)) # 内存地址不相...

Python | 浅拷贝 | 深拷贝【代码】

前言 在实际项目中,我们想修改a的数据,同时又不想影响b的数据时 ,就需要用到拷贝。拷贝分为浅拷贝和深拷贝。 接下来,我主要以代码和图片的方式来解析它们两者之间的区别。 浅拷贝:( copy.copy() ) """ 可变类型:单层列表 """ import copya = [10, 20] b = copy.copy(a)print(a) print(b) # a,b值一致 print(id(a)) print(id(b)) # 两个id不一致, b和a指向不一致,说明b是拷贝出来的a[0] = 30 #改变a的数值 pr...

两张图浅谈python3的浅拷贝与深拷贝【图】

浅拷贝:只复制可变变量的父级元素 深拷贝:递归复制整个可变变量 (比如下图的二维列表)对于不可变变量,浅拷贝和深拷贝都相当于指针。(比如下图的二维元组)截图来自网站 http://www.pythontutor.com/visualize.html,适合查看程序的执行流程,强烈推荐!

python序列的深拷贝和浅拷贝【代码】

python中的不可变类型列举:数值,字符串、元组、字节串数值及字符串“可变”的假象num = 123 mystr = abc print(id(num), num) print(id(mystr), mystr) num = 456 mystr = def print(修改后...) print(id(num), num) print(id(mystr), mystr)# 结果: 140704113688128 123 1853358409744 abc 修改... 1853359869712 456 1853361326544 def    表面上是对变量的修改,其实质是重新建立了对象,将引用赋给了变量,原来的对象被...

python深拷贝和浅拷贝

简单来讲就是:深拷贝就是把要拷贝的对象整体复制一份,存在新开辟的空间里;而浅拷贝指的是,对于要拷贝的对象要复制一份,但是对于其内部的子对象就不复制了,而是直接引用,也就是类似于添加了一个链接而已。

python列表--浅拷贝与深拷贝的区别【代码】

首先得说说列表为什么需要拷贝,就是为了解决简单赋值操作,传地址的问题,因为赋值过去的列表,其实指向的是同一个地址,问题说明看代码 a = [1,2,3] b = a # list类型,简单赋值操作,是传地址 print(id(a)) print(id(b)) b[1] = 6 print(b) print(a) 执行结果,输出的是: 2460317409864 2460317409864 [1, 6, 3] [1, 6, 3] #同一地址,修改b的列表,a也会同时改变。 为了解决以上问题,list赋值需要采用copy函数 a = [1,2,3] ...

python 关于深拷贝和浅拷贝的区别

目的:主要熟悉一维和二维数组的深拷贝和浅拷贝的区别,同时给出了比较优雅的list,set,tuple,dict的创建生成# 浅拷贝 深拷贝 # 一维数组 都是深拷贝 def copy_test():li=[]for i in range(20):if i%2 ==0:li.append(i)print(li) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]li=[1]*10li[3]=2print(li) # [1, 1, 1, 2, 1, 1, 1, 1, 1, 1]li=[i*3 for i in range(10)]print(li) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]li=[i for i in ra...

python变量存储、浅拷贝与深拷贝【图】

原文链接:https://www.cnblogs.com/maikerniuniu/p/7469087.html变量的存储 在高级语言中,变量是对内存及其地址的抽象。 对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身。 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义。采用这种方式,变量所需的存储空间大小一致,因为变量只是保存了一个引...

python中的可变对象和不可变对象、浅拷贝和深拷贝

初学python你可能会遇到以下问题(小白一枚的我反正是遇到了^-^&),话不多说上代码:a = [1, 2] b = a b[0] = 3 print(a) print(b)# 执行结果: [3,2] [3,2] 咦~,什么鬼,我明明修改的b,怎么连着a也一起变了??不要慌,我来告诉你超究极奥义:python一切皆对象!! 不贫了,上正题: python一切皆对象,对象。。。身为程序员的我还没有对象,唉。。。咳咳。。跑题了!python中的对象分为可变对象和不可变对象,先来个总结:不...