首页 > 编程语言 >Python数据的深浅拷贝

Python数据的深浅拷贝

时间:2023-08-04 17:47:46浏览次数:42  
标签:Python shallow deep 理解 深浅 拷贝 copy data

一、怎么理解深浅拷贝

二、本人之前的错误理解(写到最后我会进行提示,以防某些同学跟着我之前的思路走,导致理解混乱, 怕自己理解混乱的同学可以不看这部分。)

 

一、深浅拷贝主要的区别是在于数据进行拷贝的时候,发生的变化

浅拷贝:创建一个新对象,然后将原始对象中的元素复制到新对象中。但是,浅拷贝只复制了元素的引用而不是元素本身。

    新对象和原始对象中的元素引用的是同一份数据,如果修改了其中一个对象中的元素,另一个对象中的元素也会被影响。

深拷贝:从数据本身进行拷贝,二者是独立的,改变一个另一个不受影响。

 

【代码理解】:

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

 

【画图理解】:

 

 

 

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

 

 

 

二、本人的错误理解

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

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

 

标签:Python,shallow,deep,理解,深浅,拷贝,copy,data
From: https://www.cnblogs.com/future-panda/p/17606590.html

相关文章

  • 光环大数据python爬虫
    一、全面的爬虫工程师的技能单   1、python编程语言基础   2、HTTP协议(处理响应,)   3、html,css,javascript基本web技能   4、mysql/mongodb/redis等存储系统   5、urllib/requests/scrapy/pyspider 用来模拟浏览器发起HTTP请求的组件   6、抓包......
  • 如何在python中执行另一个py文件
    使用命令:os.system(‘pythonfile_name.py’)解释:os.system是执行当前的系统命令1、拿windows系统举例:#由于ipconfig/all在windows中是查看ip地址#所以将此命令运行在os.system中,即可查看系统的ip地址等信息importosos.system('ipconfig/all')#因为pythonfile_name.p......
  • python中字典的循环遍历的两种方式
    开发中经常会用到对于字典、列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式。注意:python2和python3中,下面两种方法都是通用的。1.只对键的遍历一个简单的for语句就能循环字典的所有键,就像处理序列一......
  • 作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角
    背景介绍现在,零拷贝功能在Linux下几乎家喻户晓,但仍有很多人对其了解有限。为了解开这个功能的神秘面纱,我决定撰写一篇关于深入探讨的文章。本文将从用户模式应用程序的角度出发,介绍零拷贝的概念,省略了内核级的技术细节。希望通过本篇文章,可以帮助大家能更好地理解这个有用功能。什......
  • 用 Python 自动创建 Markdown 表格 - 每天5分钟玩转 GPT 编程系列(4)
    目录1.他们居然问我要Prompts2.让GPT-4来写代码2.1我对DevChat说2.2DevChat回答2.3我又对DevChat说2.4DevChat的第二轮回答2.5我再次对DevChat说2.6DevChat回答2.7最后效果3.他们居然让我要写总结1.他们居然问我要Prompts早几天我用GPT-4写了一个Gol......
  • python有哪几种循环语句
    在Python中,常用的循环语句有以下几种:for循环:用于遍历给定的序列(如列表、字符串等)或可迭代对象的元素。循环会重复执行固定次数,或者依次遍历序列中的每个元素。示例:forelementinsequence:#在这里执行循环体代码while循环:通过判断条件是否为真来控制循环的执行。只......
  • Python爬虫——爬虫时如何知道是否代理ip伪装成功?
    在进行爬虫时,我们可能需要使用代理IP来伪装自己的身份,以避免被网站封禁。如何判断代理IP是否伪装成功呢?本篇文章将围绕这个问题展开讲解,同时提供Python代码示例。确认代理IP地址首先,我们需要确认代理IP地址是否正确。我们可以使用一些免费的代理IP池网站,如:站大爷、碟鸟ip、开心代理......
  • Python爬虫——爬虫时如何知道是否代理ip伪装成功?
    在进行爬虫时,我们可能需要使用代理IP来伪装自己的身份,以避免被网站封禁。如何判断代理IP是否伪装成功呢?本篇文章将围绕这个问题展开讲解,同时提供Python代码示例。1.确认代理IP地址首先,我们需要确认代理IP地址是否正确。我们可以使用一些免费的代理IP池网站,如:站大爷、碟鸟ip、开......
  • 在同一个ubunu系统上安装和配置两套python3.6和python3.8环境
    在一个系统中使用两套python3+环境的基本要求是两者不能相互冲突,所以,我选择用系统自带的update-alternatives命令行来控制。但只控制python显然是不行的,与其配套的pip也需要管理起来才行。我的系统自带的python版本是3.8.9,先从python官网下载一个python3.6,.9,然后解压缩,按照如下......
  • 什么是猴子补丁,有什么用途,什么是反射,python中如何使用反射,http和https的区别
    1什么是猴子补丁,有什么用途猴子补丁:动态修改或扩展代码的技术,通在不修改源代码的情况下,改变代码的执行方式或增加功能 -MonkeyPatching是在运行时(runtime)动态替换属性(attributes)或方法 -Python的类是可变的(mutable),方法(methods)只是类的属性(attributes);这允许我......