Python学习(六)—— 深浅copy

一、浅copy

  说明:只copy第一层的内存地址

  示例:

import copy

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n3 = copy.copy(n1)

  假设n1在内存中如下图表示

  

  浅copy后,如下图所示

  

二、深copy

  说明:copy除最后一层的内存地址

  示例:

import copy

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n4 = copy.deepcopy(n1)

  深copy后,如下图所示

  

时间: 2024-11-06 07:13:48

Python学习(六)—— 深浅copy的相关文章

python中的深浅Copy

二,深浅copy 1,先看赋值运算. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 print(l1) # [111, 2, 3, ['barry', 'alex']] print(l2) # [111, 2, 3, ['barry', 'alex']] l1[3][0] = 'wusir' print(l1) # [111, 2, 3, ['wusir', 'alex']] print(l2) # [111, 2, 3, ['wusir',

六.深浅copy

先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单词音译过来的,那什么是copy? copy其实就是复制一份,也就是所谓的抄一份.深浅copy其实就是完全复制一份,和部分复制一份的意思. 1,先看赋值运算. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 print(l1) # [111, 2, 3, ['barry', 'alex']] print(l2) # [111, 2, 3, ['barry', 'alex']] l

python学习之深浅拷贝

深浅拷贝 浅拷贝: 1.针对的是可变数据类型:list.dict.set  ,不可变数据类型int.str.tuple.bool 是没有拷贝一说的,他们都没copy() 方法 2.浅拷贝后是在内存地址中分配了一份新的地址,且浅拷贝只拷贝了第一层,第二层不会拷贝,故第二层如果改变,原数据及浅拷贝后的数据也将改变 3.= 赋值不是浅拷贝,[:] 切片是浅拷贝 a = [11,22,[11,22]] b = a 注:以上称为赋值,只是将a,b都指向了同一个内存地址 a.append(33) print

Python学习-列表深浅拷贝

一.先看一个简单的赋值语句 lst1 = ['France', 'Belgium', 'England'] lst2 = lst1 # lst1.append('Uruguay') lst2.append('Uruguay') print(lst1, lst2) # 猜测一下lst1, lst2的结果:lst2变化是否对lst1产生影响,lst1变化是否对lst2产生影响 输出结果: ['France', 'Belgium', 'England', 'Uruguay'] ['France', '

Python学习 :深浅拷贝

深浅拷贝 一.浅拷贝 只拷贝第一层数据(不可变的数据类型),并创建新的内存空间进行储蓄,例如:字符串.整型.布尔 除了字符串以及整型,复杂的数据类型都使用一个共享的内存空间,例如:列表 列表使用的是同一个内存地址,指向原拷贝的值,即使用的是原本的内存空间 import copy #假设a为一个信用卡账号,分别存有用户名称XM.账号1001.可用额度以及余额 a=['XM',1001,[10000,8000]] #b为a的一张副卡,给他人使用用户名称XM1.账号1002 b=a.copy() b[

Python学习——实现secure copy功能

Linux的scp命令可以实现两个主机之间的文件拷贝功能. 用python实现scp功能. def run_scp(from1, to, passwd, log_file): cmd = "scp %s %s" % (from1, to) p = pexpect.spawn(cmd) if log_file is None: log_file = sys.__stdout__ p.logfile = open_log_file(log_file) basename = os.path.

Python基础之深浅copy

1. 赋值 lst1 = [1, 2, 3, ["a", "b", "c"]] lst2 = lst1 lst1[0] = 11 print(lst1) #[11, 2, 3, ['a', 'b', 'c']] print(lst2) #[11, 2, 3, ['a', 'b', 'c']] lst1[3][0] = "d" print(lst1) #[11, 2, 3, ['d', 'b', 'c']] print(lst2

python学习六(运算符)

运算符(操作符) 运算符可以对一个值或多个值进行运算或者各种操作 比如 +. -. *. / 的属于运算符 运算符的分类: 1.算数运算符(加减乘除) + 加法运算符(如果是二个字符串之间进行加法运算,则进行拼串操作) - 减法运算符 * 乘法运算符 / 除法运算符 // 整除,只会保存技术后的整数位 ** 幂运算,求一个值的几次幂 % 求模,求两个数相除的余数 2.赋值运算符 赋值运算符可以将等号右侧的值赋予给等号左侧的变量 +=  a += 5 相当于 a = a + 5 -=   a -=

Python学习(六) 定义视图以及页面模板

请求解析一般都是通过请求的request获取一定参数,然后根据参数做一定业务逻辑判断,这其中可能包括查询数据库,然后将需要返回的数据封装成一个HttpResponse返回. 代码如下: 这是一个简单的处理请求的函数,对应之前url映射的  url(r'^articles/([0-9]{4})/$', views.year_archive),django会将url中用()包起来的内容作为变量传给函数,此处year_archive中的year变量就是([0-9]{4})代表的值. Article.o

python学习笔记:Day02

一.列表(list) 1.定义一个列表 name=["tom","jerry","12","13","lose","me"]  2.索引 与字符串的索引一样,列表索引从0开始. print ("第一个元素:%s"%name[0]) >>第一个元素:tom print ("最后一个元素:%s"%name[-1])>>最后一个元