|
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 = lst1print(lst1)print(lst2)lst1.append("杨逍")print(lst1)print(lst2)结果:[‘??狮王‘, ‘紫衫?王‘, ‘?眉鹰王‘, ‘?翼蝠王‘, ‘杨逍‘][‘??狮王‘, ‘紫衫?王‘, ‘?眉鹰王‘, ‘?翼蝠王‘, ‘杨逍‘]dic1 = {"id": 123, "name": "谢逊"}dic2 = dic1print(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 copylst1 = ["何炅", "杜海涛","周渝?", ["麻花藤", "?芸", "周笔畅"]]lst2 = copy.deepcopy(lst1)lst1[3].append("?敌是多磨寂寞")print(lst1)print(lst2)print(id(lst1[3]), id(lst2[3]))结果:[‘何炅‘, ‘杜海涛‘, ‘周渝?‘, [‘麻花藤‘, ‘?芸‘, ‘周笔畅‘, ‘?敌是多磨寂寞‘]][‘何炅‘, ‘杜海涛‘, ‘周渝?‘, [‘麻花藤‘, ‘?芸‘, ‘周笔畅‘]]4447221448 4447233800 |
都不?样了.
深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产??个改变另?个跟着 改变的问题 补充?个知识点:
最后我们来看?个?试题:
|
1
2
3
|
a = [1, 2]a[1] = aprint(a[1])
|
原文:https://www.cnblogs.com/ellisonzhang/p/10221878.html