Python —— 深拷贝浅拷贝

编程入门 行业动态 更新时间:2024-10-28 11:22:40

<a href=https://www.elefans.com/category/jswz/34/1770869.html style=Python —— 深拷贝浅拷贝"/>

Python —— 深拷贝浅拷贝

1、看示例
import copya = [1,2,3,4,["a","b"]]
b = ac = copy.copy(a)   # 浅拷贝   c= [1, 2, 3, 4, ['a', 'b', 'c']]
print(id(a),id(c))
d = copy.deepcopy(a)   # 深拷贝  d= [1, 2, 3, 4, ['a', 'b']]
print(id(a),id(d))
a.append(5)
a[4].append("c")print("a=",a)
print("b=",b)
print("c=",c)
print("d=",d)# 输出结果:
32817096 32817032
32817096 32816296
a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c= [1, 2, 3, 4, ['a', 'b', 'c']]
d= [1, 2, 3, 4, ['a', 'b']]
2、总结

深拷贝(Deep Copy):

        深拷贝创建了一个新的对象,该对象与原始对象的内容相同,包括所有的嵌套对象。深拷贝产生了一个完全独立的复制,修改原始对象中的可变对象不会影响新对象。

示例代码:import copyoriginal_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)original_list[0] = 5
original_list[2][0] = 6print(original_list)    # 输出:[5, 2, [6, 4]]
print(deep_copy_list)   # 输出:[1, 2, [3, 4]]

浅拷贝(Shallow Copy):

        浅拷贝创建了一个新的对象,该对象与原始对象的内容相同,但是对于可变对象(如列表和字典)来说,新对象只是原始对象的一个引用。这意味着,如果修改了原始对象中的可变对象的值,新对象也会受到影响。

另外的示例代码:import copyoriginal_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)original_list[0] = 5
original_list[2][0] = 6print(original_list)       # 输出:[5, 2, [6, 4]]
print(shallow_copy_list)   # 输出:[1, 2, [6, 4]]

总结:

浅拷贝只复制了对象的引用,而深拷贝复制了整个对象及其嵌套对象。如果需要对可变对象进行修改而不影响原始对象,应该使用深拷贝。

更多推荐

Python —— 深拷贝浅拷贝

本文发布于:2023-11-15 23:08:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1608751.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!