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程序设计入门(4)模块和包
Jun 16 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python删除n行后的其他行方法
Jan 28 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 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支持页面回退的两种方法[转]
2007/02/14 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
php生成微信红包数组的方法
2019/09/05 PHP
非主流的textarea自增长实现js代码
2011/12/20 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
vue如何进行动画的封装
2018/09/26 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
Python最长公共子串算法实例
2015/03/07 Python
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
python使用mysql的两种使用方式
2018/03/07 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
收银员岗位职责
2015/02/03 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫