首页 > 编程语言 > 详细

python基础学习笔记——深浅拷贝

时间:2019-01-16 16:12:41      阅读:184      评论:0      收藏:0      [点我收藏+]

 

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lst1 = ["??狮王""紫衫?王""?眉鹰王""?翼蝠王"]
lst2 = lst1
print(lst1)
print(lst2)
lst1.append("杨逍")
print(lst1)
print(lst2)
结果:
[‘??狮王‘‘紫衫?王‘‘?眉鹰王‘‘?翼蝠王‘‘杨逍‘]
[‘??狮王‘‘紫衫?王‘‘?眉鹰王‘‘?翼蝠王‘‘杨逍‘]
 
 
dic1 = {"id"123"name""谢逊"}
dic2 = dic1
print(dic1)
print(dic2)
dic1[‘name‘= "范瑶"
print(dic1)
print(dic2)
结果:
{‘id‘123‘name‘‘谢逊‘}
{‘id‘123‘name‘‘谢逊‘}
{‘id‘123‘name‘‘范瑶‘}
{‘id‘123‘name‘‘范瑶‘}

对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量. 并不是复制?份内容. 所以. lst1的内存指向和lst2是?样的. lst1改变了, lst2也发?了改变  

浅拷?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lst1 = ["何炅""杜海涛","周渝?"]
lst2 = lst1.copy()
lst1.append("李嘉诚")
print(lst1)
print(lst2)
print(id(lst1), id(lst2))
结果:
两个lst完全不?样. 内存地址和内容也不?样. 发现实现了内存的拷?
lst1 = ["何炅""杜海涛","周渝?", ["麻花藤""?芸""周笔畅"]]
lst2 = lst1.copy()
lst1[3].append("?敌是多磨寂寞")
print(lst1)
print(lst2)
print(id(lst1[3]), id(lst2[3]))
结果:
[‘何炅‘‘杜海涛‘‘周渝?‘, [‘麻花藤‘‘?芸‘‘周笔畅‘‘?敌是多磨寂寞‘]]
[‘何炅‘‘杜海涛‘‘周渝?‘, [‘麻花藤‘‘?芸‘‘周笔畅‘‘?敌是多磨寂寞‘]]
4417248328 4417248328

浅拷?. 只会拷?第?层. 第?层的内容不会拷?. 所以被称为浅拷?

深拷?

1
2
3
4
5
6
7
8
9
10
11
import copy
lst1 = ["何炅""杜海涛","周渝?", ["麻花藤""?芸""周笔畅"]]
lst2 = copy.deepcopy(lst1)
lst1[3].append("?敌是多磨寂寞")
print(lst1)
print(lst2)
print(id(lst1[3]), id(lst2[3]))
结果:
[‘何炅‘‘杜海涛‘‘周渝?‘, [‘麻花藤‘‘?芸‘‘周笔畅‘‘?敌是多磨寂寞‘]]
[‘何炅‘‘杜海涛‘‘周渝?‘, [‘麻花藤‘‘?芸‘‘周笔畅‘]]
4447221448 4447233800

都不?样了.

深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产??个改变另?个跟着 改变的问题 补充?个知识点:

最后我们来看?个?试题: 

1
2
3
= [12]
a[1= a
print(a[1])  

 

python基础学习笔记——深浅拷贝

原文:https://www.cnblogs.com/ellisonzhang/p/10221878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!