浅复制和深复制是Python中复制对象的两种方式。浅复制只复制对象的引用,而深复制则会复制整个对象及其子对象。具体来说,浅复制只复制对象的第一层,而深复制会递归复制整个对象树。
以下是浅复制和深复制的例子:
1.浅复制
```python
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)
print("list1:", list1) # 输出:[1, 2, [3, 4]]
print("list2:", list2) # 输出:[1, 2, [3, 4]]
list2[0] = 5
list2[2][0] = 6
print("list1:", list1) # 输出:[1, 2, [6, 4]]
print("list2:", list2) # 输出:[5, 2, [6, 4]]
```
可以看到,当我们修改list2的第一层元素时,list1并没有受到影响。但是当我们修改list2的第二层元素时,list1也被修改了。这是因为list2只复制了list1的引用,所以它们共享同一个子列表。
2.深复制
```python
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.deepcopy(list1)
print("list1:", list1) # 输出:[1, 2, [3, 4]]
print("list2:", list2) # 输出:[1, 2, [3, 4]]
list2[0] = 5
list2[2][0] = 6
print("list1:", list1) # 输出:[1, 2, [3, 4]]
print("list2:", list2) # 输出:[5, 2, [6, 4]]
```
可以看到,当我们修改list2的元素时,list1并没有受到影响。这是因为list2完全复制了list1及其子列表,所以它们是两个独立的对象。