Python学习小技巧之列表项的排序


Posted in Python onMay 20, 2017

本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

典型代码1:

data_list = [6, 9, 1, 3, 0, 10, 100, -100] 
data_list.sort() 
print(data_list)

输出1:

[-100, 0, 1, 3, 6, 9, 10, 100]

典型代码2:

data_list = [6, 9, 1, 3, 0, 10, 100, -100] 
data_list_copy = sorted(data_list) 
print(data_list) 
print(data_list_copy)

输出2:

[6, 9, 1, 3, 0, 10, 100, -100] 
[-100, 0, 1, 3, 6, 9, 10, 100]

应用场景

需要对列表中的项进行排序时使用。其中典型代码1是使用的列表自身的一个排序方法sort,这个方法自动按照升序排序,并且是原地排序,被排序的列表本身会被修改;典型代码2是调用的内置函数sort,会产生一个新的经过排序后的列表对象,原列表不受影响。这两种方式接受的参数几乎是一样的,他们都接受一个key参数,这个参数用来指定用对象的哪一部分为排序的依据:

data_list = [(0, 100), (77, 34), (55, 97)] 
data_list.sort(key=lambda x: x[1]) # 我们想要基于列表项的第二个数进行排序 
print(data_list) 
 
>>> [(77, 34), (55, 97), (0, 100)]

另外一个经常使用的参数是reverse,用来指定是否按照倒序排序,默认为False:

data_list = [(0, 100), (77, 34), (55, 97)] 
data_list.sort(key=lambda x: x[1], reverse=True) # 我们想要基于列表项的第二个数进行排序,并倒序 
print(data_list) 
>>> [(0, 100), (55, 97), (77, 34)]

带来的好处

1. 内置的排序方法,执行效率高,表达能力强,使代码更加紧凑,已读

2. 灵活的参数,用于指定排序的基准,比在类似于Java的语言中需要写一个comparator要方便很多

其它说明

1. sorted内置函数比列表的sort方法要适用范围更广泛,它可以对除列表之外的可迭代数据结构进行排序;

2. list内置的sort方法,属于原地排序,理论上能够节省内存的消耗;

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python实现根据窗口标题调用窗口的方法
Mar 13 Python
对于Python装饰器使用的一些建议
Jun 03 Python
使用python在本地电脑上快速处理数据
Jun 22 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
简单了解django文件下载方式
Feb 10 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
如何理解及使用Python闭包
Jun 01 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 #Python
Python yield 使用方法浅析
May 20 #Python
Python学习小技巧之列表项的拼接
May 20 #Python
Django验证码的生成与使用示例
May 20 #Python
Linux RedHat下安装Python2.7开发环境
May 20 #Python
深入理解Python中的内置常量
May 20 #Python
python万年历实现代码 含运行结果
May 20 #Python
You might like
php获取某个目录大小的代码
2008/09/10 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
Python实现翻转数组功能示例
2018/01/12 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
四年级作文之植物
2019/09/20 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript