首页 > 编程语言 > 详细

Python-浅拷贝与深拷贝

时间:2020-05-31 23:23:41      阅读:49      评论:0      收藏:0      [点我收藏+]

1、浅拷贝

1 >>> import copy
2 >>>
3 >>> num1 = [1, 2, 3, [a, b], 4, 5]
4 >>> num2 = copy.copy(num1)
5 >>> print(id(num1), id(num2))
6 31514312 51066184    #指向不同内存地址
7 >>>
8 >>> print(id(num1[3]), id(num2[3]))
9 51136456 51136456    #两个列表中的[‘a‘, ‘b‘]指向相同内存地址

 

可以得出结果

1 #改变其中一个列表中的外层元素时,另一个列表的外层元素不会发生变化
2 >>> num1[2] = c
3 #而无论改变哪个列表的内层元素时,两个列表的内层元素都会发生变化
4 >>> num2[3][0] = d
5 >>> print(num1)
6 [1, 2, c, [d, b], 4, 5]
7 >>> print(num2)
8 [1, 2, 3, [d, b], 4, 5]

 

2、深拷贝

都是指向不同的内存地址

1 >>> import copy
2 >>> num1 = [1, 2, 3, [a, b], 4, 5]
3 >>> num2 = copy.deepcopy(num1)
4 >>> print(id(num1), id(num2))
5 51136520 51136328
6 >>> print(id(num1[3]), id(num2[3]))
7 51136776 51066952

 

可以得出结论

1 #无论哪一个列表的内外层元素发生变化都不影响另一个列表
2 >>> num1[2] = c
3 >>> num2[3][0] = d
4 >>> print(num1)
5 [1, 2, c, [a, b], 4, 5]
6 >>> print(num2)
7 [1, 2, 3, [d, b], 4, 5]

 

Python-浅拷贝与深拷贝

原文:https://www.cnblogs.com/drunkle/p/13022021.html

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