博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 全栈开发十一 深浅拷贝
阅读量:4322 次
发布时间:2019-06-06

本文共 1114 字,大约阅读时间需要 3 分钟。

深浅拷贝

深浅拷贝的前提:  

  • 相等和相同的关系
  • 深浅拷贝针对的是列表等可变的数据类型。
  • 深浅拷贝在普通的列表没有什么意义,只有在嵌套列表,或其他嵌套数据类型才有意义。
1 a = "aaa" 2 a1 = "aaa" 3 b = a 4 print(a == a1) 5 print(id(a),id(a1),id(b))   #都一样 6 print(a == b) 7  8 c = [1,2,3] 9 c1 = [1,2,3]10 d = c11 print(c == c1)12 print(id(c),id(c1),id(d))   #c1不一样13 print(c == d)

 

字符串没有copy方法:

1 # st = "aaa"2 # st2 = st.copy()  会报错,str没有copy方法

普通列表拷贝就是生成一个新的列表,两者值形同,但id不同,且更改其中一个列表的值不影响另一列表的值:

1 #普通列表拷贝2 li = ["a",1,2]3 li2 = li.copy()4 print(li == li2)   #True5 print(li is li2)   #False6 print(id(li),id(li2))  #id不同7 li[0] = 18 print(li)    #li的改变不会更改li2的值,因为两者指的是不同的对象9 print(li2)

嵌套列表浅拷贝,两者值相同,id不同,更改非嵌套的值不影响另一列表,更改嵌套列表的值会影响另一列表。

1 li3 = [1,2,[3,4]] 2 li4 = li3.copy() 3 print(li3 == li4)    #True 4 print(li3 is li4)    #False 5 print(id(li3),id(li4))  #id不同 6  7 li3[0] = 3 8 print(li3)    #更改非嵌套列表的元素,不会更改li4的值 9 print(li4)10 11 li3[2][0] = 212 print(li3)    #修改嵌套列表的值,会改变li4的值13 print(li4)

深拷贝嵌套列表,两者值相同,id不同,更改列表的值,都不会影响另一列表,即两者完全不相干。

1 li5 = copy.deepcopy(li3)  2 li5[2][0] = 53 print(li5)  #[1,2,[5,4]4 print(li3)  #[1,2,[3,4]]

 

转载于:https://www.cnblogs.com/tashanzhishi/p/8976209.html

你可能感兴趣的文章
ping IP 带时间戳循环显示并写入日志(windos版+linux版)
查看>>
自学MVC看这里——全网最全ASP.NET MVC 教程汇总
查看>>
mediaxyz访谈录:ffmpeg的码率控制
查看>>
CenTOS7使用ACL控制目录权限,只给某个用户访问特定目录
查看>>
七天入门统计力学-第2天 系综与配分函数
查看>>
ubuntu server 10.04 apache2配置多个虚拟主机
查看>>
python标准库xml.etree.ElementTree的bug
查看>>
Tomcat服务器介绍和使用
查看>>
IOS网络方面(异步请求)
查看>>
day6 python学习
查看>>
事务分类
查看>>
《程序是怎样跑起来的》第四章读后感
查看>>
遍历datatable的几种方法(C# )
查看>>
Oracle记录(三) Scott用户的表结构
查看>>
centos静默式安装Oracle11g
查看>>
软件评测师下午题笔记
查看>>
性能测试的概念
查看>>
JavaScript中的函数上下文和apply,call
查看>>
中文排序
查看>>
少数股东损益
查看>>