详解Python列表的常用操作及应用是怎样的
Admin 2022-11-22 群英技术资讯 869 次浏览
这里需要说明一下 sort & sorted 的区别: sort 是对原列表进行排列,即原列表会改变; sorted 是返回一个排列后的列表作为返回值,即原列表不会改变,会返回一个排序后的新列表;
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] heros.sort() print(heros) # 输出:['后羿', '库里', '库里', '路易吉', '马里奥'] heros.sort(reverse=True) # 返序排列 print(heros) # 输出:['马里奥', '路易吉', '库里', '库里', '后羿'] a = sorted(heros) # 不会影响原列表,会返回一个排序后的新列表; print(a) # 输出:['后羿', '库里', '库里', '路易吉', '马里奥'] print(heros) # 输出:['马里奥', '路易吉', '库里', '库里', '后羿'] heros.reverse() # 翻转列表,与 heros.sort(reverse=True) 一样可以用这种方法,循环列表中的所有元素;
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] for hero in heros: print(hero) # 输出:后羿 库里 路易吉 库里 马里奥使用这种方法循环,可以同时获得元素的index(位置信息),举例如下:
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] for id,hero in enumerate(heros): print(id ,'--',hero) # 输出如下: # 0 -- 后羿 # 1 -- 库里 # 2 -- 路易吉 # 3 -- 库里 # 4 -- 马里奥首先看以下代码:
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] copyheros = heros print(copyheros) # 输出:['后羿', '库里', '路易吉', '库里', '马里奥'] heros[1] = '宙斯大魔王' print(heros) # 输出:['后羿', '宙斯大魔王', '路易吉', '库里', '马里奥'] print(copyheros) # 输出:['后羿', '宙斯大魔王', '路易吉', '库里', '马里奥']我们会有一个问题:为什么copyheros 的值会变?!?! 这似乎与我们的想法不一样。原因如下: 这里:copyheros = heros ,其实并没有复制,只是将 copyheros 指向了 heros,两个变量其实是共享一个内存地址的,所以当其中任何一个方法变化,另一个也会发生变化;图解如下: 所以,这里并没有任何的复制发生!
如果以上的方法无法复制,那么我们需要怎样才能复制列表呢? 答案是:我们需要使用copy() 方法;
heros = ['后羿', '库里', '路易吉','库里', '马里奥'] copyheros = heros.copy() print(copyheros) # 输出:['后羿', '库里', '路易吉', '库里', '马里奥'] heros[1] = '宙斯大魔王' print(heros) # 输出:['后羿', '宙斯大魔王', '路易吉', '库里', '马里奥'] print(copyheros) # 输出:['后羿', '库里', '路易吉', '库里', '马里奥']从上面的例子,我们可以看到,更改heros 的元素后, copyheros 未发生变化;这里的copyheros 就是浅复制; 为什么这样的复制还叫浅复制呢?请继续看~
前面讲了浅复制,所谓浅复制,通俗的说:就是只能复制列表中的第一层; 总所周知,列表是可以嵌套的,例如: ['后羿', '库里', '路易吉', [ '猎人', '法师', '牧师' ] , '马里奥'],这里的列表中,出现了另一个列表[ '猎人', '法师', '牧师'], 当出现这种情况时,浅复制无法复制列表中的列表,参考下面的例一;因为:列表中的列表依然只共享一个内存空间; 想要一个完整的复制,需要使用copy模块中的 deepcopy(), 举例如例二:
例一: 浅复制的例子:
heros = ['后羿', '库里', '路易吉',[ '猎人', '法师', '牧师' ], '马里奥'] copyheros = heros.copy() print(copyheros) # 输出:['后羿', '库里', '路易吉',[ '猎人', '法师', '牧师' ], '马里奥'] heros[3][1] = '变身!!!' print(heros) # 输出:['后羿', '库里', '路易吉', ['猎人', '变身!!!', '牧师'], '马里奥'] print(copyheros) # 输出:['后羿', '库里', '路易吉', ['猎人', '变身!!!', '牧师'], '马里奥']例二:深复制的例子:
import copy heros = ['后羿', '库里', '路易吉',[ '猎人', '法师', '牧师' ], '马里奥'] copyheros = copy.deepcopy(heros) print(copyheros) # 输出:['后羿', '库里', '路易吉', ['猎人', '法师', '牧师'], '马里奥'] heros[3][1] = '变身!!!' print(heros) # 输出:['后羿', '库里', '路易吉', ['猎人', '变身!!!', '牧师'], '马里奥'] print(copyheros) # 输出:['后羿', '库里', '路易吉', ['猎人', '法师', '牧师'], '马里奥']这里我们可以得到以下结论:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文主要介绍了python数据处理之Pandas类型转换的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
今天给大家带来的是关于Python的相关知识,文章围绕着如何使用Python脚本实现自动登录校园网展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
这篇文章主要介绍了python3使用迭代生成器实现减少内存占用的相关资料,需要的朋友可以参考下
logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。
python标准库思维导图:1、操作系统接口os模块提供了不少与操作系统相关联的函数。>>> import os>>> os.getcwd() # 返回当前的工作目录'C:\\Python34'>>> os.ch
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008