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多线程编程(八):使用Event实现线程间通信
Apr 05 Python
Python正则表达式完全指南
May 25 Python
python中正则表达式的使用方法
Feb 25 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
Python Subprocess模块原理及实例
Aug 26 Python
pycharm显示远程图片的实现
Nov 04 Python
wxPython实现绘图小例子
Nov 19 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
一看就懂:jsonp详解
2015/06/01 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python入门篇之字符串
2014/10/17 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
python获取文件扩展名的方法
2015/07/06 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
python标记语句块使用方法总结
2019/08/05 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
python 简单的调用有道翻译
2020/11/25 Python
英国著名的药妆网站:Escentual
2016/07/29 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
2014全国两会学习心得体会2000字
2014/03/10 职场文书
专业技术职务聘任书
2014/03/29 职场文书
学雷锋月活动总结
2014/04/25 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
Nginx动静分离配置实现与说明
2022/04/07 Servers