【python3系列文章(1):直接复制、浅拷贝和深度拷贝】教程文章相关的互联网学习教程文章

python深浅拷贝【代码】【图】

一、概念引入 在高级语言中,变量是对内存及其地址的抽象。 对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身。 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义。采用这种方式,变量所需的存储空间大小一致,因为变量只是保存了一个引用。也被称为对象语义和指针语义。 值语义:有些语言采用的不是这...

python开发之路之深浅拷贝【图】

深浅拷贝特别说明:1. 浅拷贝只拷贝一层,后面就是共享了。2. 例如[ [1,2,3] ,4,5,6 ],在这个嵌套列表中,小列表[1,2,3]就是一块共享的内存空间,它不是存储地址,所以你浅拷贝过来的数据对小列表即共享内存空间进行了数据修改,那么,之前的源数据也会被修改。因为修改了共 享内存空间的数据, 就相当于修改了源数据在内存中的指针方向。 3.深拷贝相当于克隆一份。浅拷贝实例一:a = [1,‘alex‘,‘alvi...

图解Python深拷贝和浅拷贝【代码】【图】

Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。下面本文就通过简单的例子介绍一下这些概念之间的差别。对象赋值直接看一段代码:will = ["Will", 28, ["Python", "C#", "JavaScript"]] wilber = will print id(will) print will print [id(ele) for ele in will] print id(wilber) print wilber print [id(ele) for ele in wilber]will[0] = "Wilber" will[2].append("CSS...

09_Python深拷贝、浅拷贝【代码】

一、循环列表,删除其中的元素l1 = [1,2,3,4,5,6,7] 循环删除奇数位元素1.正序循环删除,会出现越界情况,所以采用倒叙的方式删除1 l1 = [1,2,3,4,5,6,7] 2for i in range(len(l1) - 1,-1,-1): 3if i % 2 == 1: 4 l1.pop(l1[i]) 56print(l1)二、循环字典,删除其中的元素如果循环删除的话,编译器会报 RuntimeError: dictionary changed size during iteration1#错误代码2#dic = {‘k1‘:‘zhangsan‘,‘k2‘:‘lisi‘,‘...

Python基础篇-深浅拷贝、小数据池、集合

深浅拷贝赋值:将多个变量名指向一个同一个内存地址,有一个操作内存地址的值进行改变,其余的变量名在查看的时候都进行更改浅拷贝:只拷贝第一层元素的地址,只有修改拷贝的数据第一层的时候源数据不受影响给可变数据类型(第二层元素)进行添加的时候源数据会受影响= 是修改 append 是添加可变数据类型能够修改和添加,不可变数据类型只能修改深拷贝:不可变数据类型内存地址共用,可变数据类型新开辟一个空间 不管嵌套多深,不管...

python浅拷贝和深拷贝

今天写兑换码时,玩家兑换兑换码时,拿到了上个兑换码的奖励,还一直怀疑,mysql取该兑换码那个环节出错了,实际上是直接引用了全局常量里的数据。导致后面全局常量的数据用的是上个兑换码的奖励内容。 今天就来说说前拷贝和深拷贝之分吧!浅拷贝:copy.copy:拷贝内容浅拷贝会生成一个新的对象,但是还是会使用原始数据的引用(地址),对可变类型操作会使用一个新的对象, 对不可变类型操作不会产生新的对象(list,dict,),并修...

Python 的深浅拷贝 终于明白了【代码】

python 深浅拷贝不之前一直不太理解,只是概念性的理解像 1,2 所说,敲完下面代码希望你可以理解。1、copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。2. copy.deepcopy 深拷贝 拷贝对象及其子对象>>> import copy >>> l1 = [1,3,5,[‘a‘,‘b‘,‘c‘]] >>> a = l1 >>> b = copy.copy(a) # 浅拷贝 >>> c = copy.deepcopy(a) # 深拷贝 >>> l1.append(7) >>> l1[3].append(‘d‘) >>> print ‘l1=‘,l1 l1= [1, 3, 5, ...

python深浅拷贝,集合以及数据类型的补充【代码】

1.基础数据类型的补充1.元组如果元组中只有一个数据,且没有逗号,则该‘元组’与里面的数据的类型相同。如:1 tu = (1) 2 tu1 = (1,) 3 tu2 = (‘alex‘) 4 tu3 = ([1,2,3],) 5print(tu,type(tu)) # 1 <class ‘int‘>6print(tu1,type(tu1)) # (1,) <class ‘tuple‘>7print(tu2,type(tu2)) # alex <class ‘str‘>8print(tu3,type(tu3)) # ([1, 2, 3],) <class ‘tuple‘>2. 列表列表与列表是可以相加的,如:1 l1 = [1,2,...

python之set集合、深浅拷贝【代码】

一、基本数据类型补充1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = [‘李嘉诚‘,‘何炅‘,‘海峰‘,‘刘嘉玲‘]s = "_".join(li)print(s) # 结果为:李嘉诚_何炅_海峰_刘嘉玲li = ‘黄花大闺女‘s = "_".join(li)print(s) # 结果为:黄_花_大_闺_女2,列表相关:  循环删除列表中的每一个元素,有如下代码,注意结果并分析原因: li = [11,22,33,44]for e in li:li.remove(e)...

Python入门-深浅拷贝【代码】

首先我们在这里先补充一下基础数据类型的一些知识:一.循环删除  1.前面我们学了列表,字典和集合的一些操作方法:增删改查,现在我们来看一下这个问题:有这样一个列表: lst = [‘周杰伦‘,‘周润发‘,‘周星驰‘,‘刘德华‘]如果现在要求我们删除带‘周‘的元素,我们下意识会这样做:lst = [‘周杰伦‘,‘周润发‘,‘周星驰‘,‘刘德华‘] for i in lst:if ‘周‘ in i:lst.remove(i) print(lst) #[‘周润发‘, ‘刘德华‘]但是结果...

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} s...

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的地址:...

python-之-深浅拷贝二(元组)【代码】

元组比较特殊 1、----元组本身为不可变类型import copyv1 = (1, 2, 3, 4) v2 = copy.copy(v1) print(id(v1), id(v2)) v3 = copy.deepcopy(v1) print(id(v1), id(v3))输出: 31450280 31450280 31450280 31450280小结:元组本身是不可变类型,就像str、int、boor一样,所在在深浅拷贝时,它们的内存地址是一样的。2、----当元组中嵌套可变类型时:v1 = (1, 2, 3, [1, 2, 3], 4) import copyv2 = copy.copy(v1) print(id(v1), id(v2)...

python的复制,深拷贝和浅拷贝的区别

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用一般有三种方法,alist=[1,2,3,["a","b"]] (1)直接赋值,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变>>> b=alist>>> print b[1, 2, 3, [‘a‘, ‘b‘]]>>> alist.append(5)>>> print alist;print b[1, 2, 3, [‘a‘, ‘b‘], 5][1, 2, 3, [‘a‘, ‘b‘], 5](2)...

Python 第六天 深浅拷贝

1. 基本数据类型补充  s=" ".join(lst) 把列表中的每一项用" "拼接起来,把列表转化成字符串  lst1=s1.split() 用()中的内容切割列表,把字符串转化成列表2. 关于删除  在循环迭代的过程中不能删除  删除的方法:    创建新列表,把想要删除的内容放在列表中,循环新列表,删除原列表  字典在循环中不能增加和删除,可以修改  dict.fromkeys(k, v)   把key迭代.和value组合成k:v创建新字典, 所有的key共享同一个...

PYTHON3 - 相关标签