美文网首页
Python 浅拷贝和深拷贝

Python 浅拷贝和深拷贝

作者: 东东隆东抢 | 来源:发表于2024-09-22 13:24 被阅读0次

在 Python 中,浅拷贝和深拷贝是两种不同的拷贝方式,用来复制对象。它们的区别主要体现在是否递归复制对象内部的子对象。

import copy
#原始列表
original_list = [1,2,3,[4,5,['T','E','S','T']]]
#原始列表直接赋值给新的列表
new_list = original_list 
#浅拷贝
shallow_copied_list = original_list .copy()
#深拷贝
deep_copied_list = copy.deepcopy(original_list )

1. 浅拷贝 (shallow copy)

浅拷贝只复制对象本身,而不会递归复制它包含的子对象。换句话说,浅拷贝的新对象和原对象共享子对象的引用。
外层对象:original_listshallow_copied_list是两个独立的对象。
内层对象(嵌套列表):它们共享同一个引用。当修改 shallow_copied_list中的嵌套列表元素时,original_list 中的嵌套列表也会改变。


两个列表的外层是不同的对象,但它们的嵌套列表是同一个对象。
修改原始列表里的值:
import copy
original_list = [1,2,3,[4,5,['T','E','S','T']]]
new_list = original_list 
shallow_copied_list = original_list.copy()
deep_copied_list = copy.deepcopy(original_list)
original_list[1] = 999
original_list[3][1] = 999

2. 深拷贝 (deep copy)

深拷贝会递归地复制对象本身以及它包含的所有子对象,因此新对象和原对象完全独立。
外层对象:original_listdeep_copied_list 是独立的对象。
内层对象(嵌套列表):deep_copied_list 中的嵌套列表是原对象的深拷贝,因此两者互不影响。

总结:

浅拷贝:只复制最外层的对象,内层对象引用共享。
深拷贝:递归复制所有层级的对象,每个对象都是独立的。

相关文章

网友评论

      本文标题:Python 浅拷贝和深拷贝

      本文链接:https://www.haomeiwen.com/subject/hvotrjtx.html