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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
python模块之StringIO使用示例
Apr 08 Python
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
分享Python切分字符串的一个不错方法
Dec 14 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
python中的反斜杠问题深入讲解
Aug 12 Python
django框架forms组件用法实例详解
Dec 10 Python
PyCharm如何导入python项目的方法
Feb 06 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
AJAX的使用方法详解
2017/04/29 PHP
javascript 处理null及null值示例
2014/06/09 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
django中的HTML控件及参数传递方法
2018/03/20 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
使用python求解二次规划的问题
2020/02/29 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
给实习单位的感谢信
2014/02/01 职场文书
大学专科自荐信
2014/06/17 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
小王子读书笔记
2015/06/29 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
2015元旦感言
2015/12/09 职场文书
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android