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中from module import * 的一个坑
Jul 20 Python
Python中使用select模块实现非阻塞的IO
Feb 03 Python
Django中使用group_by的方法
May 26 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
python同时遍历两个list用法说明
May 02 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Apr 04 Python
Elasticsearch 聚合查询和排序
Apr 19 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简单生成随机数的方法
2015/07/30 PHP
JS 类型转换常见方法小结
2010/05/31 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
js验证上传图片的方法
2015/05/12 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
python使用循环实现批量创建文件夹示例
2014/03/25 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python程序退出方式小结
2017/12/09 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
python远程连接MySQL数据库
2019/04/19 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Python如何操作docker redis过程解析
2020/08/10 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
外贸员简历中的自我评价
2014/03/04 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
企业党员一句话承诺
2014/05/30 职场文书
应届生求职信范文
2014/06/30 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
Django模型层实现多表关系创建和多表操作
2021/07/21 Python