python中的深拷贝和浅拷贝,python深拷贝 浅拷贝
本文主要介绍Python列表的浅层拷贝和深层拷贝。列表的深层复制意味着无论你如何改变新列表,原始列表在一个维度或多维度都保持不变。有需要的可以参考以下详情。
00-1010 1.浅层拷贝(两者都只对第一层做深层拷贝)1。在第二回合中进行循环赋值。使用copy()函数3。使用列表生成公式4。使用索引[3360] 2。深层复制到列表深层复制是指无论你如何改变新列表(一维或多维),原列表都保持不变。
下面的浅层拷贝,对于多维列表来说,只是第一维的深层拷贝(嵌套列表存储的是地址,拷贝的时候地址也被拷贝了),所以内部的列表元素发生了变化,原来的列表也会发生变化。
目录
一、浅拷贝(均是只对第一层进行深拷贝)
旧=[1,[1,2,3],3]
new=[]
对于范围内的I(len(old)):
new.append(旧[i])
new[0]=3
new[1][0]=3
打印(旧)
打印(新)
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
1. for循环依次赋值
旧=[1,[1,2,3],3]
new=old.copy()
new[0]=3
new[1][0]=3
打印(旧)
打印(新)
输出:
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
2. 使用copy()函数
旧=[1,[1,2,3],3]
new=[i for i in old]
new[0]=3
new[1][0]=3
打印(旧)
打印(新)
输出:
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
3. 使用列表生成式
旧=[1,[1,2,3],3]
新=旧[:]
new[0]=3
new[1][0]=3
打印(旧)
打印(新)
输出:
[1, [3, 2, 3], 3]
[3, [3, 2, 3], 3]
浅拷贝对于单层列表就是深拷贝,如:
旧=[1,2,3]
新=旧[:]
new[0]=666
打印(旧)
打印(新)
[1, 2, 3]
[666, 2, 3]
4. 使用索引 [:]
使用用deepcopy()方法,才是真正的复制了一个全新的和原列表无关的:
导入副本
旧=[1,[1,2,3],3]
new=copy.deepcopy(旧)
new[0]=3
new[1][0]=3
[1, [1, 2, 3], 3]
[3, [3, 2, 3], 3]
关于Python列表的浅拷贝和深拷贝的这篇文章到此为止。更多关于Python的浅拷贝和深拷贝,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。