Python之深浅拷贝

一 直接赋值

1 a = [1,2,3]
2 b = a
3 b[0] = 2
4 print(a)
5 print(b)
输出:
[2, 2, 3]
[2, 2, 3]

像上面直接赋值, a为可变型变量,b=a相当于b是a的别名,b和a指向相同的地址;改变b中的值,相应的a的值也会改变。

二 浅拷贝 :copy()

 

1 a = [[1,2],3,4]
2 b = a.copy()
3 b[1] = 2
4 print(a)
5 print(b)
输出:
[[1, 2], 3, 4]
[[1, 2], 2, 4]

 

 

1 a = [[1,2],3,4]
2 b = a.copy()
3 b[0][0] = "123"
4 print(a)
5 print(b)
输出:
[['123', 2], 3, 4]
[['123', 2], 3, 4]

 

 

浅拷贝只拷贝一层。

三 深拷贝:deepcopy()

 深拷贝后,两者没有任何关系。

1 import copy
2 a = [[1,2],3,4]
3 b = copy.deepcopy(a)
4 b[0][0] = "123"
5 print(a)
6 print(b)
输出:
[[1, 2], 3, 4]
[['123', 2], 3, 4]

 

posted @ 2018-09-30 18:42  开心的小草  阅读(208)  评论(0编辑  收藏  举报