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中元祖、列表和字典的区别
Aug 17 Python
Python探索之Metaclass初步了解
Oct 28 Python
教你用Python写安卓游戏外挂
Jan 11 Python
python调用Matplotlib绘制分布点并且添加标签
May 31 Python
华为2019校招笔试题之处理字符串(python版)
Jun 25 Python
python的pstuil模块使用方法总结
Jul 26 Python
pandas如何处理缺失值
Jul 31 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
pytorch masked_fill报错的解决
Feb 18 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 Python
anaconda python3.8安装后降级
Jun 11 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
php 动态多文件上传
2009/01/18 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
解析isset与is_null的区别
2013/08/09 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
syntaxhighlighter 使用方法
2007/07/02 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
jQuery实现日历效果
2020/09/11 jQuery
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
python中__call__方法示例分析
2014/10/11 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
简单了解Python生成器是什么
2019/07/02 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
JPA的特点
2014/10/25 面试题
土木工程师岗位职责
2013/11/24 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
人事专员的岗位职责
2014/03/01 职场文书
中职招生先进个人材料
2014/08/31 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript