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检测远程udp端口是否打开的方法
Mar 14 Python
python协程用法实例分析
Jun 04 Python
Python从零开始创建区块链
Mar 06 Python
django启动uwsgi报错的解决方法
Apr 08 Python
tensorflow实现简单逻辑回归
Sep 07 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Django 用户认证Auth组件的使用
Nov 30 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
拖拉表格的JS函数
2008/11/20 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
npm qs模块使用详解
2020/02/07 Javascript
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
python中join()方法介绍
2018/10/11 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
Python Pillow Image Invert
2019/01/22 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
《乡愁》教学反思
2014/02/18 职场文书
大学应届生的自我评价
2014/03/06 职场文书
机关保密承诺书
2014/06/03 职场文书
建筑结构施工求职信
2014/07/11 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
初中家长评语大全
2014/12/26 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
尝试使用Python爬取城市租房信息
2022/04/12 Python
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang