【python中的赋值与深浅拷贝】教程文章相关的互联网学习教程文章

python中的深浅拷贝【图】

1.变量的实质 每个变量都是一个容器,里面存放着值的内存地址。 注意:如果值为不可变对象,则变量地址等于内存地址 2.浅拷贝 解释:与原对象建立一一对应的内存映射关系。 缺点:在拷贝对象中修改可变对象时,会同时修改了原对象中的内容 函数:.copy() 3.深层拷贝 解释:为所有层级的可变对象单独开辟内存空间(也就是赋予新的内存地址),但所有不可变对象还是和原来一样是一一对应的映射关系。 函数:copy.deepcopy()注意:...

深浅拷贝 python【代码】

1 #深浅拷贝2 #浅拷贝1 1、直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变。3 4 li1 =[1, 2, 3]5 li2 = li1.copy()6 li1.append(4)7 print(fli1:{li1}, id:{id(li1)})8 print(fli2:{li2}, id:{id(li2)})9 print(* * 100) 10 11 #浅拷贝2 (只拷贝最边一层) 2、copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变。 12 l1 =[1, 2, 3, []] 13 l2 = l1.copy() 14 15 l1[-1].appen...

通俗理解python列表的深浅拷贝与区分

浅拷贝是只拷贝内容,地址没有拷贝。 比如laoBa_home = [1,2]地址是8888,我让laoBa_house = a.copy() 这里a和b实际上指向的是同一个地址,a和b只是同一个房子的不同称呼,对b修改a当然也会跟着变。 深拷贝是拷贝内容,也“拷贝”地址 比如laoBa_home = [1,2]地址是8888,我让xiaoBa_home = copy.deepcopy(laoBa_home ),这里就是照着laoBa_home再盖一所房子叫xiaoBa_home。你修改xiaoBa_home的内容laoBa_home 自然不会变,他俩本质...

Python深浅拷贝【代码】

Python深浅拷贝一、引言在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用针对该列表l1=[a,b,c,[d,e,f]]一般有三种方法,分别为:拷贝(赋值)、浅拷贝、深拷贝注意:拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的1.1可变or不可变id不变值可变,即在原值的基础上修改,则为可变数据类型;值变id也变,即重新申请一个空间放入新...

Python中的深浅拷贝【代码】【图】

在讲深浅拷贝之前,我们先重温一下 is 和==的区别。 在判断对象是否相等比较的时候我们可以用is 和 ==:is:比较两个对象的引用是否相同,即它们的id是否一样。 == : 比较两个对象的值是否相同。id() ,是Python的一个内置函数,返回对象的唯一标识,用于获取对象的内存地址。 如下:a = 1 b = 1print(id(a)) # 2040055728 print(id(b)) # 2040055728 print(a is b) # True首先,会为整数1分配一个内存空间。 变量a 和 b 都指向...

Python-深浅拷贝【代码】

一、浅拷贝 常见的浅拷贝的方法,是使用数据类型本身的构造器,比如下面两个例子: list1 = [1, 2, 3] list2 = list(list1) print(list2) print("list1==list2 ?",list1==list2) print("list1 is list2 ?",list1 is list2)set1= set([1, 2, 3]) set2 = set(set1) print(set2) print("set1==set2 ?",set1==set2) print("set1 is set2 ?",set1 is set2)运行结果为: [1, 2, 3] list1==list2 ? True list1 is list2 ? False {1, 2, 3}...

python之深浅拷贝【代码】

1.=的意义s1= s2 将s2的值赋值给s1 id(s1) = id(s2) 2.浅拷贝copy只拷贝第一层,拷贝表面id(s1) != id(s2)2.1 lst1 = ["元素1", "元素2", "元素3", "元素4"] lst2 = lst1.copy() # 拷贝, 可以帮我们创建新的对象,和原来长的一模一样, 浅拷贝print(id(lst1)) print(id(lst2)) # id(lst1) !=id(lst2)lst1.append("元素5") print(lst1) print(lst2) #lst1 和 lst2 输出内容不一致 lst1中有元素5,lst2中没有元素5 l...

从底层剖析Python深浅拷贝【代码】【图】

拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据。使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不同的操作。 值得一提的是绝大部分编程语言中对于copy都有深浅拷贝的概念,所以充分的理解本章节的知识也是在为今后学习其他编程语言少走弯路。 在Python中,除开手动deepcopy(),其他的任何操作都是浅拷贝。 Python = 赋值示例 好了,废话不多说。直接进入主题,...

简述python中的深浅拷贝

说到什么是深浅拷贝,就不得不说python中赋值的含义,赋值并不是拷贝,而是将target和object建立了一种联系,当一个object可变时,连接该object的任意一个target改变该object值都会影响其他连接该object的target的取值。如:>>> a=[1,2,3] >>> b=a >>> b[0]=0 >>> b [0, 2, 3] >>> a [0, 2, 3] 那如果只想改变一个mutable object的值,而它原来的值还保留,该怎么办呢?答案就是拷贝,通过python 内建库copy。 而拷贝又分为深拷...

python入行007(深浅拷贝、while循环)【图】

1 对于可变容器类型数据——直接赋值、浅copy、深copy三种操作的异同(1)直接赋值 var2 = var1变量名映射的地址是一致的,两个变量指向的是堆区同一个地址,var1的值改变var2也跟着改变。(2)浅copy var2 = var1.copy()变量名的id是不同的,即堆区中第一层的内存地址是不同的。var1中的不可变类型元素改变不会影响var2中的元素,但是可变类型的元素是在原地址上发生变化,因此var2也会跟着发生变化。(3)深copyimport copyvar2 ...

python易误点——赋值、深浅拷贝【代码】

赋值 举个例子str='aaa' str1=str print(str is str1) str='bbb' print(str1)--------------- output: True aaastr=str1说明,str和str1指向同一个地址,那么为什么str改变了值之后,str1没有跟着变化呢?因为对于string这类的不可变对象,可变对象有list等,str=‘bbb’实现开辟一块地址给字符串‘bbb’然后将str指向这个地址。而str1还是指向之前存储‘aaa’的地址。这就导致了经过str=‘bbb’后,str和str1指向了不同的地址。拷...

python深浅拷贝【代码】

一、浅拷贝先看如下代码:data = {name: lilei,age: 20,score: {语文:120,数学:50,英语:130,} } data_2 = data data[age] = 30 print(data_2) print(data) 结果: {name: lilei, age: 30, score: {语文: 120, 数学: 50, 英语: 130}} {name: lilei, age: 30, score: {语文: 120, 数学: 50, 英语: 130}}为什么改变了data中的数据,data_2中的数据也跟着变了呢,因为data_2=data 其实只是拿到了data的内存地址,单data里每个k,v都有单...

Python学习之路(四):基础知识之深浅拷贝【代码】

1.is和==的区别 == 比较左右两边的值,如果相同,打印的是True,如果不同,打印的是False1 n = 10 2 n1 = 12 3 print(n == n1) #Falseis比较的是内存地址1 a = dhj 2 b = dhj 3 print(a is b) # True1 a = a*21 2 b = a*21 3 print(a is b) #false为什么第二个程序中的结果会是False呢,这涉及到一个小数据池的概念:小数据池只限制于数值和字符串,数值的范围:-5至256字符串中如果有特殊字符如+ - * 等,他们的内存地址就会不一...

Python入门基础(第5天):基本数据知识补充和深浅拷贝【代码】

1、基本类型知识补充 (1)join( ) 使用方法# 将列表转换成字符串,每个元素之间用_拼接(可自定拼接字符) lst="-".join(["何东洋","he","5225"]) print(lst)# 字符串转换成列表用:split("分隔符") # 列表转换成字符串用:join("[内容]")ss="小何**晓东**假如" #字符串 print(ss.split("**"))(2)remove( ) 使用方法 # 列表删除 lst=["鲁A4545","鲁C4554","川C1111","云A1245"] # lst.clear() #方法一:直接清空# 方法二:使用r...

Python之深浅拷贝

Python之深浅拷贝一、浅拷贝所谓浅拷贝,指的是对于某个对象,虽然创建了与该对象具有相同值的另一个对象,但是,这两个对象內部嵌套的对应子对象全都是同一个对象。简单地说,外部进行了拷贝,内部没有拷贝。以下方式得到的拷贝都是浅拷贝:● 切片操作[:]● 调用列表、字典、集合的方法copy()● 调用内置函数List()、dict()、set(4.● 调用标准库模块copy中的函数copy()import copy # 导入标准库模块copy L1 = [1,[1,2,3],6] L2 = L1....

赋值 - 相关标签