Python数据的深浅拷贝
一、怎么理解深浅拷贝
二、本人之前的错误理解(写到最后我会进行提示,以防某些同学跟着我之前的思路走,导致理解混乱, 怕自己理解混乱的同学可以不看这部分。)
一、深浅拷贝主要的区别是在于数据进行拷贝的时候,发生的变化
浅拷贝:创建一个新对象,然后将原始对象中的元素复制到新对象中。但是,浅拷贝只复制了元素的引用而不是元素本身。
新对象和原始对象中的元素引用的是同一份数据,如果修改了其中一个对象中的元素,另一个对象中的元素也会被影响。
深拷贝:从数据本身进行拷贝,二者是独立的,改变一个另一个不受影响。
【代码理解】:
""" -*- coding: utf-8 -*- @FileName: train.py @Software: PyCharm @Time : 2023/8/4 17:00 @Author : Panda """ import copy # 浅拷贝 shallow_copy_data = [1, 2, [10, 66]] shallow_copy = shallow_copy_data.copy().copy() # 也可以直接写data.copy() # 修改数据 不管是任何一个改变都会改变 shallow_copy[2][1] = 99 shallow_copy_data[2][1] = 99 print("shallow_copy_data: ", shallow_copy_data) # Output: shallow_copy_data: [1, 2, [10, 99]] print("shallow_copy: ", shallow_copy) # Output: shallow_copy_data: [1, 2, [10, 99]] # 深拷贝 deep_copy_data = [1, 2, [10, 66]] deep_copy = copy.deepcopy(deep_copy_data) # 修改数据,修改谁,谁的数据就会变,另一个不受影响 deep_copy_data[2][1] = 99 print("deep_copy_data: ", deep_copy_data) # Output: deep_copy_data: [1, 2, [10, 66]] print("deep_copy: ", deep_copy) # Output: deep_copy: [1, 2, [10, 99]]
【画图理解】:
**************************分界线***********************************************
二、本人的错误理解
我最初理解的时候,以为浅拷贝是将数据复制,复制完以后两个就是独立的,比较理解为深拷贝的情况,后来多方查找,理解浅拷贝是共享同一份数据。
而深拷贝的理解,我一直认为是将数据复制到内核,也就是说,深浅的区别只在于我复制到哪里。(可能会影响大家的理解,也可能不会,大家注意区分)
本文来自博客园,作者:许个未来—,转载请注明原文链接:https://www.cnblogs.com/future-panda/p/17606590.html