python深拷贝和浅拷贝的区别_Python3之深拷贝和浅拷贝区别

python深拷贝和浅拷贝的区别_Python3之深拷贝和浅拷贝区别首先 我们知道 Python3 中 有 6 个标准的数据类型 他们又分为可以变和不可变 不可变 Number 数字 String 字符串 Tuple 元组 可以变 List 列表 Dictionary 字典 Set 集合 浅拷贝 copy 模块里面的 copy 方法实现 浅拷贝后 改变原始对象中为可变类型的元素的值 会同时影响拷贝对象 改变原始对象中为不可变类型的元素的值 不会响拷贝对象 代码演示 im

首先,我们知道Python3中,有6个标准的数据类型,他们又分为可以变和不可变。

不可变:Number(数字)、String(字符串)、Tuple(元组)。

可以变:List(列表)、Dictionary(字典)、Set(集合)。

浅拷贝

copy模块里面的copy方法实现。

浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。

代码演示

import copy

#定义一个列表,其中第一个元素是可变类型。

list1 = [[1,2], ‘fei’, 66];

#进行浅copy

list2 = copy.copy(list1);

#对象地址是否相同。

print(id(list1));

print(id(list2));

#结果:不同

#第一个元素地址是否相同。

print(id(list1[0]));

print(id(list2[0]));

#结果:相同

#第二个元素地址是否相同。

print(id(list1[1]));

print(id(list2[1]));

#结果:相同

#改变第一个值,查看复制对象变化。

list1[0][0] = 2;

print(list2);

#结果:复制对象发生变化

[[2, 2], ‘fei’, 66]

#改变第二个值,查看复制对象变化。

list1[1] = ‘ge’;

print(list2);

#结果:复制对象没发生变了

[[2, 2], ‘fei’, 66]

深拷贝

copy模块里面的deepcopy方法实现。

深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。

经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。

代码演示

import copy

#定义一个列表,其中第一个元素是可变类型。

list1 = [[1,2], ‘fei’, 66];

#进行深copy

list2 = copy.copy(list1);

#对象地址是否相同。

print(id(list1));

print(id(list2));

#结果:不同

#第一个元素地址是否相同。

print(id(list1[0]));

print(id(list2[0]));

#结果:不同

#第二个元素地址是否相同。

print(id(list1[1]));

print(id(list2[1]));

#结果:相同

#改变第一个值,查看复制对象变化。

list1[0][0] = 2;

print(list2);

#结果:复制对象没发生变了

[[1, 2], ‘fei’, 66]

#改变第二个值,查看复制对象变化。

list1[1] = ‘ge’;

print(list2);

#结果:复制对象没发生变了

[[1, 2], ‘fei’, 66]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229169.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午5:19
下一篇 2026年3月16日 下午5:19


相关推荐

  • 进程管理之进程调度「建议收藏」

    进程管理之进程调度「建议收藏」文章目录一、进程调度基础1、进程调度定义2、进程调度目标二、基本调度算法1、先来先服务算法2、时间片轮转算法3、短任务优先算法4、优先级调度算法5、混合调度算法  在多进程并发的环境里,虽然从概念上看,有多个进程在同时执行,但在单个CPU下,在任何时刻只能有一个进程处于执行状态,而其他进程则处于非执行状态。那么问题来了,我们是如何确定在任意时刻到底由哪个进程执行,哪些不执行呢?这就涉及到进程管理…

    2026年4月18日
    4
  • 计算机存储数据时2的20次方,2的20次方是多少

    计算机存储数据时2的20次方,2的20次方是多少手机评站网今天精心准备的是 2 的 20 次方是多少 下面是详解 2 的十次方是多少 2 的十次方 1024 计算过程 2 10 2 5 2 5 32 32 1024 次方最基本的定义是 设 a 为某数 n 为正整数 a 的 n 次方表示为 a 表示 n 个 a 连乘所得之结果 如 2 2 2 2 2 16 次方的定义还可以扩展到 0 次方和负数次方等等 次方有两种算法 第一种是直接用乘法计算 例 3 3 3

    2026年3月19日
    2
  • html中table样式_table样式设置

    html中table样式_table样式设置如果想在网页中建一个如下table表格应该怎么做呢?首先建一个表<table><table>/*table标签就是建一个表格*/ <tr>/*tr标签就是tablerow,即为表格中的一行*/ <th>学号</th>/*th标签即tablehead,就是表头*/ <th>姓名</th> <th>手机号</th> <th>家庭地址</th&

    2026年1月31日
    3
  • 消息称阿里拟推企业级AI智能体产品,有望接入淘宝和支付宝

    消息称阿里拟推企业级AI智能体产品,有望接入淘宝和支付宝

    2026年3月16日
    2
  • 计算机3级数据库技术考哪些内容,计算机考试三级数据库技术考试大纲[通俗易懂]

    计算机3级数据库技术考哪些内容,计算机考试三级数据库技术考试大纲[通俗易懂]全国计算机等级考试采用全国统一命题,统一考试的形式。所有科目每年开考两次。下面是小编整理的计算机考试三级数据库技术考试大纲,欢迎大家参考!基本要求1.掌握数据库技术的基本概念、原理、方法和技术。2.能够使用SQL语言实现数据库操作。3.具备数据库系统安装、配置及数据库管理与维护的基本技能。4.掌握数据库管理与维护的`基本方法。5.掌握数据库性能优化的基本方法。6.了解数据库应用系统的生命周期及其设…

    2022年6月21日
    31
  • TCP与UDP的区别

    TCP与UDP的区别一 前言 TCP IP 中有两个具有代表性的传输层协议 分别是 TCP 和 UDP 二 TCP IP 网络模型计算机与网络设备要相互通信 双方就必须基于相同的方法 比如 如何探测到通信目标 由哪一边先发起通信 使用哪种语言进行通信 怎样结束通信等规则都需要事先确定 不同的硬件 操作系统之间的通信 所有的这一切都需要一种规则 而我们就把这种规则称为协议 protocol TCP IP 是互联网相关的各类协议族的总称 比如 TCP UDP IP FT

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号