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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python中random模块生成随机数详解
Mar 10 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
python实现俄罗斯方块游戏
Mar 25 Python
python导入模块交叉引用的方法
Jan 19 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
python实现ftp文件传输功能
Mar 20 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python创建临时文件和文件夹
Aug 05 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
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
javascript数组排序汇总
2015/07/07 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
Python中的index()方法使用教程
2015/05/18 Python
python之super的使用小结
2018/08/13 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
文明市民先进事迹
2014/05/15 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
项目建议书
2015/02/04 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python