python列表的赋值,浅复制和深复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python列表的赋值,浅复制和深复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1676字,纯文字阅读大概需要3分钟。
内容图文
![python列表的赋值,浅复制和深复制](/upload/InfoBanner/zyjiaocheng/715/345ab92587d041c3b8a189103cdb7227.jpg)
1.python列表的赋值
赋值主要是设定了一个变量的引用,赋值主要方式是通过=,*。
a = [[]]*6 a[0].append(1) a[5].append(2) print(a)
显示结果:[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]
a = [1,2,[3]]
b = a
b.append(4)
print(a,id(a))
print(b,id(b))
显示结果:
[1, 2, [3], 4] 2382876458056
[1, 2, [3], 4] 2382876458056
显而易见,不论对于哪一个赋值的变量进行修改,由于引用的内存地址不变,最终修改的内存空间也不会变,所以最终显示结果如上图所示(如果赋值的是数值类型对象,会新建内存空间,形同深复制)
2.python列表的浅复制
python列表的浅复制方式一般是copy()和列表切片。
import copy
a = [1,2,[3]]
b = copy.copy(a)
b.append(4)
b[2].append(4)
print(a,id(a))
print(b,id(b))
显示结果:
[1, 2, [3, 4]] 1990656670856
[1, 2, [3, 4], 4] 1990656671112
a = [[1,3],{'a':'b'},4,{4}]
b = a[:]
b[0].append(5)
b[1]['c'] = 'd'
b[3].add(10)
b[2] = 6
print(a,id(a))
print(b,id(b))
显示结果:
[[1, 3, 5], {'a': 'b', 'c': 'd'}, 4, {10, 4}] 2720397671496
[[1, 3, 5], {'a': 'b', 'c': 'd'}, 6, {10, 4}] 2720397671624
浅复制分析:python列表的浅复制对于列表中存在可变的可迭代对象如列表,集合,字典这样的存在也是引用的原对象的地址空间,所以会一同改变(此处不讨论不可变的可迭代对象的引用)。对于列表中存在的数值型数据浅复制会直接创建新的地址空间用以保存。
3.python列表的深赋值
python列表的深复制就我已知只有copy.deepcopy()一种了。
import copy
a = [1,2,[3]]
b = copy.deepcopy(a)
b.append(4)
b[2].append(4)
print(a,id(a))
print(b,id(b))
显示结果:
[1, 2, [3]] 2286733180040
[1, 2, [3, 4], 4] 2286733180296
深复制分析:python列表的深复制是直接新建一个内存空间将原列表的所有内容全部复制。不论哪一个发生改变都不会对另一个造成影响。
本人才疏学浅,如果以上内容存在思虑不周或有误之处还望不吝指点。
内容总结
以上是互联网集市为您收集整理的python列表的赋值,浅复制和深复制全部内容,希望文章能够帮你解决python列表的赋值,浅复制和深复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。