Python:copy()和deepcopy()的区别和使用方法
2024-01-07 17:30:09
??copy() 和 deepcopy() 都是 Python 中用于复制对象的方法,但它们在复制过程中的行为不同。
copy()
??copy()
是浅拷贝,它创建一个新的对象,但是只复制了对象本身及其顶层元素的引用,而不是元素的内容。
- 对于可变对象(如列表、字典等),copy()创建一个新对象,但它们内部的元素是原对象和副本共享的。因此,对其中一个对象进行修改会影响到另一个对象。
- 对于不可变对象(如整数、字符串等),copy() 创建的副本与原对象相同,因为不可变对象无法被修改。
deepcopy()
??deepcopy()
是深拷贝,它创建一个全新的对象,递归地复制原始对象及其所有嵌套的对象。这意味着它会复制对象本身以及对象中的所有元素,包括嵌套的列表、字典等。
??不论对象的层级有多深,deepcopy() 都会创建一个完全独立的副本,即使对其中一个对象进行修改也不会影响到另一个对象。
使用方法示例:
import copy
# 浅拷贝示例
original_list = [1, 2, [3, 4]]
copied_list = copy.copy(original_list)
original_list[2][0] = 'changed'
print(original_list) # 输出: [1, 2, ['changed', 4]]
print(copied_list) # 输出: [1, 2, ['changed', 4]]
# 深拷贝示例
original_list = [1, 2, [3, 4]]
deep_copied_list = copy.deepcopy(original_list)
original_list[2][0] = 'changed'
print(original_list) # 输出: [1, 2, ['changed', 4]]
print(deep_copied_list) # 输出: [1, 2, [3, 4]]
??在示例中:
- 对于浅拷贝,修改原始列表的嵌套列表内容会影响到复制后的列表。
- 对于深拷贝,即使修改原始列表的嵌套元素也不会影响到深拷贝后的列表。
文章来源:https://blog.csdn.net/weixin_42046845/article/details/135441489
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!