python list排序的两种方法及实例讲解


Posted in Python onMarch 20, 2017

对List进行排序,Python提供了两个方法

方法1.用List的内建函数list.sort进行排序

list.sort(func=None, key=None, reverse=False)

Python实例:

>>> list = [2,5,8,9,3] 
>>> list 
[2,5,8,9,3] 
>>> list.sort() 
>>> list 
[2, 3, 5, 8, 9]

方法2.用序列类型函数sorted(list)进行排序(从2.4开始)

Python实例:

>>> list = [2,5,8,9,3] 
>>> list 
[2,5,8,9,3] 
>>> sorted(list) 
[2, 3, 5, 8, 9]

两种方法的区别:

sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。

list.sort() 不会返回对象,改变原有的list。

其他sort的实例:

实例1:正向排序

>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]

实例2:反向排序

>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]

实例3:对第二个关键字排序

>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(lambda x,y:cmp(x[1],y[1])) 
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

实例4: 对第二个关键字排序

>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1]) 
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

实例5: 对第二个关键字排序

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1)) 
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

实例6:(DSU方法:Decorate-Sort-Undercorate)

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项

为比较关键字进行排序.

效率比较:

cmp < DSU < key

通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当

多关键字比较排序:

实例7:

>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

我们看到,此时排序过的L是仅仅按照第二个关键字来排的,

如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法

实例8:

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

实例9:

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

为什么实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
Python入门学习之字符串与比较运算符
Oct 12 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
python 美化输出信息的实例
Oct 15 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
如何使用repr调试python程序
Feb 28 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
简单了解如何封装自己的Python包
Jul 08 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 #Python
Python 专题四 文件基础知识
Mar 20 #Python
python 与GO中操作slice,list的方式实例代码
Mar 20 #Python
Python闭包的两个注意事项(推荐)
Mar 20 #Python
使用python实现生成用户信息
Mar 20 #Python
Unicode和Python的中文处理
Mar 19 #Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 #Python
You might like
地摊中国 - 珍藏老照片
2020/08/18 杂记
php基础知识:函数基础知识
2006/12/13 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
Python的语言类型(详解)
2017/06/24 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
Python with语句用法原理详解
2020/07/03 Python
python Tornado框架的使用示例
2020/10/19 Python
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
合作意向书范本
2014/03/31 职场文书
学生请假条
2014/04/11 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
干部作风建设心得体会
2014/10/22 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
Elasticsearch 聚合查询和排序
2022/04/19 Python