设为首页 收藏本站
查看: 797|回复: 0

[经验分享] Python中列表的copy方法

[复制链接]
发表于 2018-8-14 12:21:06 | 显示全部楼层 |阅读模式
  首先感谢,资料由网上的查询共享并保存下来的,该资料完全是用来学习,希望大家有用。
  1.在列表中存在一个名为copy的方法,就像字面意思一样copy方法是用于复制列表元素的,示例如下:
1 names = [‘Zhangsan’,’Lisi’,’WangErgou’]2 names2 = names.copy()3 print(names,names2)  当然执行结果也跟想象中是一样的:
[‘Zhangsan’,’Lisi’,’WangErgou’] [‘Zhangsan’,’Lisi’,’WangErgou’]  如果修改了其中一项元素,会不会影响复制体呢?
1 names = [‘Zhangsan’,’Lisi’,’WangErgou’]2 names2 = names.copy()3 print(names,names2)4 names[1] = “Zhaowu”5 print(names,names2)  结果显而易见,复制体和本体互不影响,结果如下:
1 [‘Zhangsan’,’Lisi’,’WangErgou’] [‘Zhangsan’,’Lisi’,’WangErgou’]2 [‘Zhangsan’,’Zhaowu’,’WangErgou’] [‘Zhangsan’,’Lisi’,’WangErgou’]  那么列表嵌套是否也适用呢,测试一下:
1 names = [‘Liuneng’,’Zhaosi’,[’SongXiaofeng’,’LiuDanaodai'],’XieGuangkun’]2 names2 = names.copy()3 print(names,names2)4 names[2][0] = ‘XieDajiao’5 print(names,names2)  额,结果好像有点不同:
1 [‘Liuneng’,’Zhaosi’,[’SongXiaofeng’,’LiuDanaodai'],'XieGuangkun'] [‘Liuneng’,’Zhaosi’,[’SongXiaofeng’,’LiuDanaodai'],’XieGuangkun’]2 [‘Liuneng’,’Zhaosi’,[’XieDajiao’,’LiuDanaodai'],’XieGuangkun’] [‘Liuneng’,’Zhaosi’,[’XieDajiao’,’LiuDanaodai'],’XieGuangkun’]  原来主列表只是存储了嵌套列表在内存中的地址,而不是所看到的数据,copy的也只是嵌套列表的地址,但两个地址指向的是内存中同一块区域,所以在对嵌套列表进行修改时,只是通过了两个复制地址而修改了真实数据,所以两个列表的元素都被改掉了。
  当然,肯定会有完全独立的复制的需求,此时则需要导入一个copy模块来实现了:
  copy  
2 names = ['zhao','qian',['sun','li'],'zhou']
  
3 names2 = copy.copy(names)
  
4 print(names,names2)
  
5 names[2][0] = 'wu'
  
6 print(names,names2)
  执行之后得到结果:
1 ['zhao','qian',['sun','li'],'zhou’] ['zhao','qian',['sun','li'],'zhou’]2 ['zhao','qian',[‘wu','li'],'zhou’] ['zhao','qian',['wu','li'],'zhou']  -.-# 好吧,copy模块的copy方法和python列表的内置函数copy是一样的,想要完全复制则需要深层copy:
1 import copy2 names = ['zhao','qian',['sun','li'],'zhou']3 names2 = copy.deepcopy(names)4 print(names,names2)5 names[2][0] = 'wu'6 print(names,names2)  执行之后得到结果:
1 ['zhao','qian',['sun','li'],'zhou’] ['zhao','qian',['sun','li'],'zhou’]2 ['zhao','qian',[‘sun','li'],'zhou’] ['zhao','qian',['wu','li'],'zhou']  好了,最后终于得到的完全复制的结果。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551635-1-1.html 上篇帖子: python之raw_input()(学习笔记六) 下篇帖子: Python 生成器&迭代器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表