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 17 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
Pytorch之保存读取模型实例
Dec 30 Python
python实现最速下降法
Mar 24 Python
通过Python实现一个简单的html页面
May 16 Python
使用pth文件添加Python环境变量方式
May 26 Python
基于python纯函数实现井字棋游戏
May 27 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 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/03/16 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
js获取变量
2006/08/24 Javascript
input的focus方法使用
2010/03/13 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
详解a++和++a的区别
2017/08/30 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
python查询mysql中文乱码问题
2014/11/09 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python3.5绘制随机漫步图
2018/08/27 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python批量处理txt文件的实例代码
2020/01/13 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
高中军训感言500字
2014/02/24 职场文书
高三毕业寄语
2014/04/10 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
Python加密与解密模块hashlib与hmac
2022/06/05 Python