Python 深浅copy

#!/usr/bin/env python3import copy

#copy 有两种#浅copy#copy.copy()

#深copy#copy.deepcopy()

‘‘‘#########################                      ##   字符串于数字的copy   ##                      #########################

#内存地址相同,字符串于数字的copy永远都是用的内存中的唯一的地址#a = 123123#b = 123123#print(id(a))#print(id(b))

#a1 = 123123#b1 = copy.copy(a1)#print(id(b1))

a2 = 123123b2 = copy.deepcopy(a2)print(id(a2))‘‘‘

#其他,元组、列表、字典的copy

dic = {‘name‘:‘andy‘,‘age‘:18,‘job‘:‘IT‘,‘pro‘:[1,2,3,4,5]}#浅copydic2 = copy.copy(dic)print(dic)print(id(dic))print(dic2)print(id(dic2))

#深copydic2 = copy.deepcopy(dic)print(dic)print(id(dic))print(dic2)print(id(dic2))

#实例,网络模版#假设如下是网络模版,有很多机器都要使用,重复创建太傻了,所以就用到了copy

#浅copy会出错,把不需要修改数据已经修改了,会连同模版一起修改掉ds = {    ‘cup‘:[80,],    ‘mem‘:[80,],    ‘disk‘:[80,]}#print(‘浅copy‘)# print(ds)# new_ds = copy.copy(ds)# new_ds[‘cup‘][0] = 50# print(new_ds)# print(ds)

#深copy只修改需要的数据,不会对模版造成影响print(‘深copy‘)print(ds)new_ds = copy.deepcopy(ds)new_ds[‘cup‘][0] = 50print(new_ds)print(ds)
时间: 2024-11-10 15:28:59

Python 深浅copy的相关文章

python深浅copy探究

引入 在python程序中,如果我们操作一个变量的值去做运算,而又想在下次调用时,仍使用原来的变量的值去做运算,那么我们我们就需要将这个变量去做备份,这就是本文所要探究的问题. 开始 变量-对象-引用: python中全部皆对象,Python中变量是指对象(甚至连type其本身都是对象,type对象)的引用,Python是动态类型,程序运行时候,会根据对象的类型来确认变量到底是什么类型. 我们有时候会见到这样一种情况: a = 1 b = a 这样做不就是把数据copy了一份吗,错,这样做只是在

python深浅copy和赋值

Python直接赋值,浅copy和深copy的比较 基于引用和对象(python引用和对象分离) 总结: 直接赋值:a = b -->a,b两个引用指向相同的对象 浅copy:a为b的copy --> copy(新建)b的不可变子对象,共用可变子对象 深copy:a为b的深copy-->copy(新建)b的所有子对象,两者对象无关联 ps:对象的值相等,内存地址不一定相同(小数据池) 详细解析如下: 在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时

Python深浅copy

1 l1 = [1, 2, 3] 2 l2 = l1 3 l1.append('a') 4 print(l1, l2) # 深cpoy 5 6 l1 = [1, 2, 3] 7 l2 = l1.copy() # 浅拷贝 8 l2.append('a') 9 print(l1, l2) 1.其他代码 1 # 赋值运算 2 # l1 = [1,2,3] 3 # l2 = l1 4 # l1.append('a') 5 # print(l1,l2) 6 7 #copy 8 # l1 = [1,2,3]

python之深浅copy

三.深浅copy调用方法:import copy #浅拷贝copy.copy() 深拷贝copy.deepcopy() #赋值1. 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址.举例:import copy#字符串,数字a1 = 'adddddd'a2 = '12322'a2 = a1print(id(a1))print(id(a2))a3 = copy.deepcopy(a1)print(id(a1))print(id(a3))输出结果:4192344

python之旅 1-29 补充内容,深浅copy

#  l1 = [111,222,333,444,555] 将索引为奇数位的元素删除. # l1 = [111,222,333,444,555] # del l1[1::2] # print(l1) 通过删除列表中的元素 # for i in range(len(l1)-1,0,-1): # if i%2==0: # del l1[i-1] # print(l1) 通过循环列表,用range指代索引位置 for i in l1: if l1.index(i)%2==0: l2.append(i)

python之集合、深浅copy、文件操作、函数初识

本节内容:集合.深浅copy.文件操作.函数初识 1.小知识点补充 2.编码二 3.集合 4.深浅copy 5.文件操作 6.函数的初识 1.小知识点补充                                                                                           1.1 小数据池====str.int 小数据池存在的意义就是节省内存 节省内存,位多个变量开辟一个共享空间(str和int) int:-5--256 int===

python之数据类型补充、集合、深浅copy

一.内容回顾 代码块: 一个函数,一个模块,一个类,一个文件,交互模式下,每一行就是一个代码块. is == id id()查询对象的内存地址 == 比较的是两边的数值. is 比较的是两边的内存地址. 小数据池: 前提:int,str,bool 1,节省内存. 2,提高性能和效率. 小数据池是什么? 在内存中,创建一个'池',提前存放了 -5 ~256 的整数,一定规则的字符串和bool值. 后续程序中,如果设置的变量指向的是小数据池的内容,那么就不会再内存中重新创建. 小数据池与代码块的关系

python 06 id is == set 深浅copy

01 今日内容大纲 is==id用法 代码块 同一代码下的缓存机制 不同代码下的缓存机制(小数据池) 总结 集合(了解,但金融有时候会用到) 深浅copy 02 昨日回顾 is id == 字典初识: 查询速度快,存储大量的关联性数据 键:是不可变数据类型,比如str bool int tuple,并且是唯一的 值:可以是任意数据类型,对象 字典3.5x之前是无序的,3.6x按照初始时的顺序排列,3.7之后是有序的 增删改查: 增:setdefault(),dic['age']=18 删:pop

【python】-- 深浅copy、集合

深浅copy 1.数字.字符串的copy: 赋值(=).浅拷贝(copy)和深拷贝(deepcopy)其实都一样,因为它们永远指向同一个内存地址: >>> import copy >>> n1 = 123 >>> print(id(n1)) #打印n1的内存地址 502665488 ##赋值## >>> n2 = n1 >>> print(id(n2)) 502665488 ##浅拷贝## >>>