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解释执行原理分析
Aug 22 Python
Python中字典的基本知识初步介绍
May 21 Python
python简单商城购物车实例代码
Mar 15 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
基于python实现聊天室程序
Jul 27 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
Flask框架工厂函数用法实例分析
May 25 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
浅谈Python3多线程之间的执行顺序问题
May 02 Python
如何利用python正则表达式匹配版本信息
Dec 09 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安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
javascript 三种编解码方式
2010/02/01 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
js密码强度校验
2015/11/10 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
对python模块中多个类的用法详解
2019/01/10 Python
python程序 创建多线程过程详解
2019/09/23 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
使用python求解二次规划的问题
2020/02/29 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
美国网上书店:Barnes & Noble
2018/08/15 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
餐饮服务食品安全责任书
2014/07/25 职场文书
2014年教学工作总结
2014/11/13 职场文书
如何在Python中创建二叉树
2021/03/30 Python