【一】深浅拷贝
深拷贝(deep copy)和浅拷贝(shallow copy)是在Python中用于复制对象的两种方式。它们的作用如下:
1.浅拷贝:浅拷贝创建一个新的对象,但是该新对象的元素是对原始对象的引用。换句话说,浅拷贝只复制了对象的引用,而不是对象本身。当原始对象中的元素发生变化时,浅拷贝的对象也会受到影响。
2.深拷贝:深拷贝创建一个全新的对象,并且递归地复制原始对象及其所有嵌套的对象。换句话说,深拷贝会复制对象的所有内容,包括对象本身和其嵌套的对象。深拷贝的对象与原始对象完全独立,互不影响。
深拷贝和浅拷贝的选择取决于你希望如何处理复制后的对象。如果你想创建一个独立的对象,不受原始对象的影响,就应该使用深拷贝。
如果你只需要一个简单的副本,并且对原始对象的更改不会影响到副本,那么可以使用浅拷贝。
在Python中,可以使用copy
模块来进行深拷贝和浅拷贝。copy
模块提供了copy()
函数和deepcopy()
函数来执行相应的拷贝操作。
下面是一个示例,演示了深拷贝和浅拷贝的区别:
import copy
# 原始列表
original_list = [1, 2, [3, 4]]
# 浅拷贝
shallow_copy = copy.copy(original_list)
# 深拷贝
deep_copy = copy.deepcopy(original_list)
# 修改原始列表中的元素
original_list[0] = 5
original_list[2][0] = 6
# 输出结果
print("原始列表:", original_list)
print("浅拷贝:", shallow_copy)
print("深拷贝:", deep_copy)
1.1 - 深浅拷贝的区别
深拷贝和浅拷贝的区别如下:
1.复制方式:浅拷贝只复制对象的引用,而深拷贝会递归地复制对象及其所有嵌套的对象。
2.对象独立性:浅拷贝创建一个新的对象,但其嵌套的对象仍然是原始对象中嵌套对象的引用。深拷贝创建一个全新的对象,包括嵌套的对象,使得新对象与原始对象完全独立。
3.对原始对象的影响:对原始对象进行修改时,浅拷贝的对象会受到影响,而深拷贝的对象不会受到影响。
4.性能和资源消耗:由于深拷贝需要递归地复制对象及其所有嵌套的对象,因此执行深拷贝可能需要更多的时间和内存资源。
总结起来,浅拷贝只复制对象的引用,而深拷贝复制整个对象及其嵌套的对象。浅拷贝的对象与原始对象共享嵌套对象,因此对嵌套对象的修改会影响到浅拷贝的对象。深拷贝创建完全独立的对象,对原始对象的修改不会影响到深拷贝的对象。
在实际应用中,根据需要选择适当的拷贝方式,以确保复制后的对象的行为符合预期。
标签:浅谈,对象,嵌套,复制,深浅,原始,拷贝,copy From: https://www.cnblogs.com/wx-x/p/17879784.html