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]]

 

【画图理解】:

 

 

 

**************************分界线***********************************************

 

 

 

二、本人的错误理解

我最初理解的时候,以为浅拷贝是将数据复制,复制完以后两个就是独立的,比较理解为深拷贝的情况,后来多方查找,理解浅拷贝是共享同一份数据。

而深拷贝的理解,我一直认为是将数据复制到内核,也就是说,深浅的区别只在于我复制到哪里。(可能会影响大家的理解,也可能不会,大家注意区分)

 

posted @ 2023-08-04 17:31  许个未来—  阅读(16)  评论(0编辑  收藏  举报