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 代码效率的方法
Jul 03 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
Python的Urllib库的基本使用教程
Apr 30 Python
python实现人民币大写转换
Jun 20 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
django fernet fields字段加密实践详解
Aug 12 Python
Python post请求实现代码实例
Feb 28 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
TensorFlow保存TensorBoard图像操作
Jun 23 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面向对象精要总结
2014/11/07 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
php命令行模式代码实例详解
2021/02/26 PHP
setTimeout自动触发一个js的方法
2014/01/15 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
JS中的三个循环小结
2017/06/20 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
js实现烟花特效
2020/03/02 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
python模拟表单提交登录图书馆
2018/04/27 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python函数的作用域及关键字详解
2019/08/20 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
详解Python IO编程
2020/07/24 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
大学优秀班主任事迹材料
2014/05/02 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
学生保证书格式
2015/02/27 职场文书
返乡农民工证明
2015/06/24 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS