下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第python中list.copy方法用法详解当我们想复制两个一模一样的列表时,我们可能使用到list.copy()这个方法,这个方法可以让我们复制一个相同的数组,当遇到下面这种情况时,可能会遇到一些问题
#_*_coding='utf8'_*_
nameList=[1,2,3,4,5]
nameList1=nameList.copy()
nameList[1]=55
print(nameList,nameList1)
此时打印出nameList和nameList1时,两个列表的元素是下面这样
[1,55,3,4,5][1,2,3,4,5]
可以看到列表的第二个元素不一样
这是因为在python中list.copy()这个函数在执行的时候,指向的不是nameList在内存中的地址,而是重新复制了一份,此时两个列表在内存中的地址不同,我们可以打印出来看看
使用如下代码可以见到,两个列表的内存已经有差别了
nameList=[1,2,3,[3,4,5],4,5]
nameList1=nameList.copy()
nameList[1]=55
print(id(nameList),id(nameList1))
22075288675202207531826048
此时修改的nameList[1]=55并不会在nameList1中生效
而当nameList中又存在数组时,情况又会发生变化
#_*_coding='utf8'_*_
nameList=[1,2,3,[3,4,5],4,5]
nameList1=nameList.copy()
nameList[3][2]=55
print(nameList,nameList1)
输入如下内容
[1,2,3,[3,4,55],4,5][1,2,3,[3,4,55],4,5]
可以看到两个list中嵌套的数组都发生了变化,这是因为在列表中存放的二维列表,实际上存放的是二维列表在内存中的地址,当修改其中一个列表,另外一个自然也会受到影响,那么,让我们来验证一下是不是存放的内存地址。
同样的,我们使用id()这个方法来取出内存地址
#_*_coding='utf8'_*_
nameList=[1,2,3,[3,4,5],4,5]
nameList1=nameList.copy()
nameList[3][2]=55
print(id(nameList[3]),id(nameList1[3]))
输出如下内容
28798594223362879859422336
可以看到,两个内存地址是相同的
copy方法介绍到此结束
补充:pythonlist.copy()和copy.deepcopy()区别
举个例子
importcopy
classListNode:
def__init__(self,x):
self.val=x
self.next=None
def__repr__(self):
returnstr(self.val)
list1=[ListNode(1),ListNode(2)]
list2=list1.copy()
list3=list1[:]
list4=copy.deepcopy(list1)
print(list1,list2,list3,list4)
#[1,2][1,2][1,2][1,2]
list1[0].val=5
print(list1,list2,list3,list4)
#[5,2][5,2][5,2][1,2]
list1.append(ListNode(10))
print(list1,list2,list3,list4)
#[5,2,10][5,2][5,2][1,2]
print(id(list1[0]),id(list2[0]),id(list3[0]),id(list4[0]))
#1984073709792198407370979219840737097921984073707824
解释
list1是原数组list2和list3都是list1的浅拷贝,浅拷贝到底是什么意思?
python的list里面存的都是引用,如果存的是listnode,实际上存的是listnode的引用,也就是地址,毕竟如果listnode里存了很多关于这个node的信息的话,直接在list里面存这段信息的地址就很方便,等到要用这段信息的时候(比如list1[0].val),只要找到地址(list1[0])再到这段地址取值(.val)就可以了。
浅拷贝的意思是,开辟一段内存,这段内存里复制了原list的地址。
地址还是那个地址,所以可以看出**id(list1[0]),id(list2[0])**是完全一样的。这会带来的问题是,当我们把这段地址里的值.val变化一下(list1[0].val=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年抚顺矿务局总医院医护人员招聘笔试备考试题及答案详解
- 单细胞测序数据分析算法准确性研究报告
- 企业供应链绿色供应商协同管理机制效果追踪研究方法
- 2026年人才测评工作培训试题及答案
- 2026-2030全球与中国漏斗锥市场供需现状及未来销售渠道趋势报告
- 培训策划设计管理制度
- 2026-2030中国PVC墙板行业市场发展趋势与前景展望战略分析研究报告
- 甘肃省兰州市八校2025-2026学年高一下学期期中化学试卷(含解析)
- 2026黑龙江齐齐哈尔市克东县五保供养服务中心招聘消防设施操作人员6人备考题库及1套参考答案详解
- 五矿国际信托有限公司2026届春季校园招聘13人备考题库及答案详解一套
- 初三道德与法治中考复习:开放性设问之倡议书、标语与活动方案专项突破教案
- 2025年合肥高新区社区工作者招聘考试试卷真题
- 2025年荣耀AI隐私安全白皮书
- 2026届山东省聊城市临清市重点达标名校中考押题生物预测卷含解析
- 2026年高考(湖南卷)化学试题及答案
- 2025 地中海气候的特点和成因课件
- 围手术期营养支持指南
- 2024年广东省中考语文试卷附真题答案
- 快消品渠道营销策略研究
- 人教版高中化学选择性必修3 第二章测评(含答案)
- 麦凯66表格(完全版)
评论
0/150
提交评论