数据类的浅复制和深复制方法的实现
发布时间:2023-12-24 02:05:01
在Python中,数据类的复制可以分为浅复制和深复制两种方法。浅复制会创建一个新的对象,但是它的元素仍然是原始对象中元素的引用;而深复制会创建一个完全独立的新对象,包括所有的元素。
下面是浅复制和深复制的方法实现以及使用例子。
### 浅复制方法
浅复制可以使用copy()方法来实现。该方法创建一个新的对象,但是复制对象中的元素仍然是原始对象中的元素的引用。
使用浅复制时,如果原始对象的元素是可变类型的话,修改复制对象中的元素也会影响原始对象。
下面是使用copy()方法实现浅复制的例子:
import copy
# 原始对象
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print("Original List:", original_list)
# 浅复制
shallow_copy = copy.copy(original_list)
print("Shallow Copy:", shallow_copy)
# 修改复制对象中的元素
shallow_copy[0][0] = 10
# 原始对象的元素也被修改
print("Original List after Shallow Copy modification:", original_list)
输出结果:
Original List: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Shallow Copy: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Original List after Shallow Copy modification: [[10, 2, 3], [4, 5, 6], [7, 8, 9]]
可以看到,修改复制对象中的元素后,原始对象的元素也被修改。
### 深复制方法
深复制可以使用deepcopy()方法来实现。该方法创建一个完全独立的新对象,包括所有的元素。即使原始对象的元素是可变类型的,修改复制对象中的元素也不会影响原始对象。
下面是使用deepcopy()方法实现深复制的例子:
import copy
# 原始对象
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print("Original List:", original_list)
# 深复制
deep_copy = copy.deepcopy(original_list)
print("Deep Copy:", deep_copy)
# 修改复制对象中的元素
deep_copy[0][0] = 10
# 原始对象的元素不受影响
print("Original List after Deep Copy modification:", original_list)
输出结果:
Original List: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Deep Copy: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] Original List after Deep Copy modification: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
可以看到,修改复制对象中的元素后,原始对象的元素不受影响。
综上所述,浅复制和深复制是数据类复制的两种方法。浅复制创建一个新的对象,但是元素仍然是原始对象中元素的引用;深复制创建一个完全独立的新对象,包括所有的元素。根据具体需求,选择合适的复制方法来实现数据类的复制。
