首页 > 其他分享 >深浅拷贝问题

深浅拷贝问题

时间:2023-12-06 18:45:47浏览次数:32  
标签:对象 list 列表 问题 v1 深浅 拷贝 copy

深浅拷贝问题

  • copy.copy浅拷贝
  • copy.deepcopy深拷贝

浅拷贝copy.copy

  • copy.copy浅拷贝
    • 原来的拷贝对象------拷贝出了一个新的对象
    • 修改原对象------原对象必须改变-----新对象也会随着原对象的改变而改变。
  • 总结:复制一份原来的对象,如果原来的对象中存在可变数据类型,那么修改原来对象中的可变数据类型之后,原来的对象中数据肯定会改变,浅拷贝后的新对象中的数据也会随着原来对象中的数据而改变。
import copy

"""浅拷贝"""
# #原列表
# old_list=[1,2,3,[11,22]]
# #拷贝的新列表
# new_list=copy.copy(old_list)
# #修改原列表
# old_list[3].append(33)
# #输出源列表和新列表
# print(old_list)
# print(new_list)
# # 原来列表[1, 2, 3, [11, 22, 33]]
# # 新的列表[1, 2, 3, [11, 22, 33]]

深拷贝copy.deepcopy

  • copy.deepcopy深拷贝
    • 原来对象-----拷贝出了一个新对象
    • 修改了原来的对象------原来对象肯定改变----拷贝出来的新对象不会发生改变
  • 总结:复制一份原来的对象,如果原来的对象中存在可变数据类型,那么修改原来对象中的可变数据类型之后,原来的对象中数据肯定会改变,深拷贝后的新对象中的数据不会改变。
import copy

"""深拷贝"""
# #原列表
# old_list=[1,2,3,[11,22]]
# #拷贝的新列表
# new_list=copy.deepcopy(old_list)
# #修改原列表
# old_list[3].append(33)
# #输出源列表和新列表
# print(old_list)
# print(new_list)
# # 原来列表[1, 2, 3, [11, 22, 33]]
# # 新列表[1, 2, 3, [11, 22]]

面试题

"""面试题"""
v1 = [1, 2, 3, 4, 5]#1699375391488
v2 = [v1, v1, v1]
v2[1][0] = 111
v2[2][0] = 222
print(id(v1))
print(id(v2[0]),id(v2[0]),id(v2[0]))#1699375391488 1699375391488 1699375391488
print(v1)#[222, 2, 3, 4, 5]
print(v2)#[[222, 2, 3, 4, 5], [222, 2, 3, 4, 5], [222, 2, 3, 4, 5]]
"""
v1是一个列表,修改列表内的元素不会改变列表的内存地址
v2中的v1仍是同一个内存地址,修改v2中v1列表的元素不会使v1的内存地址发生改变,
所以v2中每个v1元素都是内存地址相同的,相同的内存地址内的元素都相同。
"""

标签:对象,list,列表,问题,v1,深浅,拷贝,copy
From: https://www.cnblogs.com/suyihang/p/17880267.html

相关文章

  • SpringBoot Seata 死锁问题排查
    现象描述:SpringBoot项目,启动的时候卡住了,一直卡在那里不动,没有报错,也没有日志输出但是,奇怪的是,本地可以正常启动好吧,姑且先不深究为什么本地可以启动而部署到服务器上就无法启动的问题,这个不是重点,重点是怎么让它启动起来。(PS:我猜测可能是环境不同造成的,包括操作系统不同和JD......
  • oracle开启了审计功能,导致sysaux表空间满的问题
    查询是否开启审计功能SQL>showparameteraudit如下图所示:AUDIT_TRAIL参数用于指定数据库审计跟踪信息的记录方式。它接受三个可能的参数:NONE,DB,OS:NONE表示不记录任何审计信息,也不会在操作系统上记录任何信息;DB表示把审计信息记录在数据库表SYS.AUD$中,而不是写入操作系统......
  • jupyter notebook代码补全扩展安装遇到 Jupyter command `jupyter-contrib` not found
    Jupytercommandjupyter-contribnotfound.解决方案——新的安装方式。方法1:pip方式1.先使用以下命令,卸载旧版本的jupyter_contrib_nbextensions和upyter_nbextensions_configurator:分别用cmd命令,卸载之前的安装pipuninstalljupyter_contrib_nbextensionspipuninsta......
  • Android12版本闹钟服务崩溃问题
    原文地址:Android12版本闹钟服务崩溃问题-Stars-One的杂货小窝公司项目app线上出现的崩溃记录问题,崩溃日志如下所示:Causedbyjava.lang.SecurityException:Callercom.health.trackeranzneedstoholdandroid.permission.SCHEDULE_EXACT_ALARMorandroid.permission......
  • 面对突如其来的JVM 垃圾回收问题如何下手解决
    Java全能学习面试指南:https://javaxiaobear.cn今天我们主要从一个实战案例入手分析面对突如其来的GC问题该如何下手解决。想要下手解决GC问题,我们首先需要掌握下面这三种问题。如何使用jstat命令查看JVM的GC情况?面对海量GC日志参数,如何快速抓住问题根源?你不得不掌握的......
  • python HTML文件标题解析问题的挑战
    引言在网络爬虫中,HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息,但是在实际操作中,我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题,并提供解决方案。问题背景在解析HTML文件标题的过程中,......
  • 深浅拷贝
    深浅拷贝【1】浅拷贝使用浅拷贝创造对象,修改原来对象中的可变数据类型复制的对象也会随着原来的对象改变而改变首先,会为整数1分配一个内存空间。变量a和b都指向了这个内存空间(内存地址相等),所以他们的id相等。a=1b=1print(id(a))#2057422768print(id(b))#......
  • Error: error:0308010C:digital envelope routines::unsupported 【问题解决】【转载
    原文链接:  https://www.cnblogs.com/jaxu/p/17171211.html今天早上打开电脑,更新了日常工作的github仓库,然后就是习惯性地执行了"npminstall",发现报了下面这个错误:Error:error:0308010C:digitalenveloperoutines::unsupported顺便看了一下错误堆栈,发现是一个Node......
  • Layui中遇到的一些问题
    Layui通过template实现对单元格样式的改变1.Layui通过template实现对单元格样式的改变ListR为数据集合点击查看代码functionEscape(ListR){varListData=[];ListData.push({type:'checkbox',fixed:'left'})//获取系统参数表数据......
  • 浅谈深浅拷贝
    【一】深浅拷贝深拷贝(deepcopy)和浅拷贝(shallowcopy)是在Python中用于复制对象的两种方式。它们的作用如下:1.浅拷贝:浅拷贝创建一个新的对象,但是该新对象的元素是对原始对象的引用。换句话说,浅拷贝只复制了对象的引用,而不是对象本身。当原始对象中的元素发生变化时,浅拷贝的对象也......