copy()和deepcopy()函数
时间: 2023-12-11 14:47:43 浏览: 184
浅谈python中copy和deepcopy中的区别
在Python中,copy()和deepcopy()函数都可以用来复制对象。
copy()函数创建一个新的对象,但是只复制原始对象的顶层数据。如果原始对象有嵌套的对象,那么这些嵌套的对象将会被共享,而不是被复制。这就是所谓的“浅复制”。
例如,如果我们有一个列表,其中包含其他列表的引用,那么使用copy()函数只会复制顶层列表的内容,而不会复制内部列表的内容:
```
>>> a = [[1, 2], [3, 4]]
>>> b = a.copy()
>>> a[0][0] = 0
>>> b
[[0, 2], [3, 4]]
```
在这个例子中,修改原始列表中的元素也会影响复制后的列表。
相反,deepcopy()函数会递归复制所有的嵌套对象,包括内部的列表和字典,从而创建一个完全独立的副本。这就是所谓的“深复制”。
例如,如果我们使用deepcopy()函数来复制上面的列表,那么修改原始列表中的元素不会影响复制后的列表:
```
>>> import copy
>>> a = [[1, 2], [3, 4]]
>>> b = copy.deepcopy(a)
>>> a[0][0] = 0
>>> b
[[1, 2], [3, 4]]
```
在这个例子中,修改原始列表中的元素不会影响复制后的列表。
阅读全文