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数组复制拷贝的实现方法
Jun 09 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
Python基本socket通信控制操作示例
Jan 30 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
python如何通过twisted搭建socket服务
Feb 03 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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
php $_SERVER当前完整url的写法
2009/11/12 PHP
PHP 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP类的特性实例分析
2016/09/28 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
Python导入txt数据到mysql的方法
2015/04/08 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python实现文本界面网络聊天室
2018/12/12 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
python3中property使用方法详解
2019/04/23 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
关于环保的建议书400字
2014/03/12 职场文书
生产助理岗位职责
2014/06/18 职场文书
宣传标语大全
2014/07/01 职场文书
单位授权委托书范文
2014/08/02 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
薪资证明范本
2015/06/19 职场文书
感恩父母主题班会
2015/08/12 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB