首页 > Python资料 博客日记

python 的深浅拷贝

2024-02-27 17:00:03Python资料围观164

Python资料网推荐python 的深浅拷贝这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣

python 的深浅拷贝

在Python中,深拷贝(deep copy)和浅拷贝(shallow copy)是用于复制数据结构(如列表或字典)的两种不同方式,它们有以下区别:

浅拷贝(Shallow Copy):

浅拷贝创建一个新的对象,然后将原始对象中的元素(如果是可变对象)复制到新对象中。但是,如果元素本身也是一个可变对象,则新对象中的元素和原始对象中的元素将共享相同的内存地址,因此修改其中一个对象中的元素会影响到另一个对象中相同位置的元素。
浅拷贝可以使用 copy() 方法来实现,或者使用切片操作符 [:]。
深拷贝(Deep Copy):

深拷贝创建一个新的对象,并且递归地复制原始对象中的所有元素及其嵌套对象,因此新对象中的元素与原始对象中的元素完全独立,彼此之间没有关联。
深拷贝可以使用 copy.deepcopy() 函数来实现。
下面是深拷贝和浅拷贝的示例:

import copy

# 原始列表
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 浅拷贝
shallow_copy = copy.copy(original_list)

# 修改原始列表中的一个元素
original_list[0][0] = 100

# 打印浅拷贝和原始列表
print("浅拷贝:", shallow_copy)
print("原始列表:", original_list)

# 深拷贝
deep_copy = copy.deepcopy(original_list)

# 修改原始列表中的一个元素
original_list[1][1] = 200

# 打印深拷贝和原始列表
print("深拷贝:", deep_copy)
print("原始列表:", original_list)

输出结果如下所示:

浅拷贝: [[100, 2, 3], [4, 5, 6], [7, 8, 9]]
原始列表: [[100, 2, 3], [4, 5, 6], [7, 8, 9]]
深拷贝: [[100, 2, 3], [4, 5, 6], [7, 8, 9]]
原始列表: [[100, 2, 3], [4, 200, 6], [7, 8, 9]]

可以看到,浅拷贝的列表中的第一个子列表被修改后,浅拷贝中的对应元素也被修改了,而深拷贝则不受影响。


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐