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中的filter和lambda函数的使用
Apr 07 Python
遗传算法之Python实现代码
Oct 10 Python
python更改已存在excel文件的方法
May 03 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
python操作gitlab API过程解析
Dec 27 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
浅谈sklearn中predict与predict_proba区别
Jun 28 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
深入理解python协程
Jun 15 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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/02/04 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
JS实现京东商品分类侧边栏
2020/12/11 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python书单 不将就
2017/07/11 Python
python基础练习之几个简单的游戏
2017/11/10 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
python matplotlib库的基本使用
2020/09/23 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
物理教师自荐信范文
2013/12/28 职场文书
大四学生思想汇报
2014/01/13 职场文书
医院辞职信范文
2014/01/17 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
技术股东合作协议书
2014/12/02 职场文书
投标邀请书范本
2015/02/02 职场文书
杭白菊导游词
2015/02/10 职场文书
推荐信范文大全
2015/03/27 职场文书
校运会班级霸气口号
2015/12/24 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang