在Python中,拷贝对象通常使用`copy`模块中的`copy.copy()`和`copy.deepcopy()`方法。以下是它们的使用方式:
浅拷贝(Shallow Copy)
使用`copy.copy()`方法创建一个新对象,这个新对象包含对原始对象中包含项的引用。
如果原始对象是可变的,并且你修改了它,那么浅拷贝的对象也会受到影响。
深拷贝(Deep Copy)
使用`copy.deepcopy()`方法创建一个新对象,这个新对象包含对原始对象中包含项的深拷贝。
如果原始对象是可变的,并且你修改了它,那么深拷贝的对象不会受到影响。
下面是一个简单的例子,展示了浅拷贝和深拷贝的区别:
import copy
原始列表
original_list = [1, 2, 3, [4, 5]]
浅拷贝
shallow_copied_list = copy.copy(original_list)
深拷贝
deep_copied_list = copy.deepcopy(original_list)
修改原始列表中的子列表
original_list.append(6)
输出结果
print("Original list:", original_list) 输出: [1, 2, 3, [4, 5, 6]]
print("Shallow copied list:", shallow_copied_list) 输出: [1, 2, 3, [4, 5, 6]]
print("Deep copied list:", deep_copied_list) 输出: [1, 2, 3, [4, 5]]
在这个例子中,你可以看到浅拷贝的列表在修改原始列表的子列表后也发生了变化,而深拷贝的列表保持不变。这是因为浅拷贝只复制了对象的引用,而深拷贝复制了对象及其所有子对象。