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 变量类型及命名规则介绍
Jun 08 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
详解python中的线程
Feb 10 Python
python ipset管理 增删白名单的方法
Jan 14 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
python生成requirements.txt的两种方法
Sep 18 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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操作xml
2013/10/27 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
大学生新闻专业个人自我评价
2013/11/12 职场文书
个人自我评价分享
2013/12/20 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
检讨书格式
2015/01/23 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS