Python学习笔记 ---- 深浅copy

版权声明: https://blog.csdn.net/qq_40627333/article/details/82952114
list_one = [1, 2, 3, 4]
list_two = list_one
list_two[0] = 9
print(list_one)

执行以上代码理想的结果输出是 [1,2,3,4];注意这是理想结果

实际的结果却是 [9,2,3,4];追其原因就涉及到下面的深浅拷贝问题(上例为典型的浅拷贝)

浅拷贝:拷贝对象引用

list_one = [1, 2, 3, 4] 对list_one对象赋值;即:

                                                                                              

list_two = list_one 将list_one的引用赋给list_two;即:

                                                                                              
list_two[0] = 9 修改了list_one和list_two的引用;即:

                                                                                             

因此造成了上述问题;可以通过查看id的方式查看浅拷贝,浅拷贝对象的引用相同,因此id也应该相同:

为此,我们需要进行深拷贝来解决这样的问题;

深拷贝:拷贝对象本身;                 (Python中copy模块的deepcopy方法提供了深拷贝)

import copy

list_one = [1, 2, 3, 4]
list_two = copy.deepcopy(list_one)
list_two[0] = 9
print(list_one)

输出结果是:[1,2,3,4]

list_two = copy.deepcopy(list_one) 即:

                                                                                        

list_two[0] = 9 只改变list_two的引用,list_one的引用不变;即:

                                                                                       

用id来进行验证:

猜你喜欢

转载自blog.csdn.net/qq_40627333/article/details/82952114