欢迎访问宙启技术站
智能推送

数据类的浅复制和深复制方法的实现

发布时间: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]]

可以看到,修改复制对象中的元素后,原始对象的元素不受影响。

综上所述,浅复制和深复制是数据类复制的两种方法。浅复制创建一个新的对象,但是元素仍然是原始对象中元素的引用;深复制创建一个完全独立的新对象,包括所有的元素。根据具体需求,选择合适的复制方法来实现数据类的复制。