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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
python re正则表达式模块(Regular Expression)
Jul 16 Python
跟老齐学Python之使用Python操作数据库(1)
Nov 25 Python
浅析Python中的多条件排序实现
Jun 07 Python
Python常用内置模块之xml模块(详解)
May 23 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
python读取文件名并改名字的实例
Jan 07 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python数据正态性检验实现过程
Apr 18 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python 中[0]*2与0*2的区别说明
May 10 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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
8个必备的PHP功能实例代码
2013/10/27 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
Python中decorator使用实例
2015/04/14 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
Python 多核并行计算的示例代码
2017/11/07 Python
python绘制多个曲线的折线图
2020/03/23 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
介绍一下Python中webbrowser的用法
2013/05/07 面试题
护理自荐信范文
2013/10/05 职场文书
小学教师评语大全
2014/04/23 职场文书
法制演讲稿
2014/09/10 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
nginx实现动静分离的方法示例
2021/11/07 Servers
我的收音机情缘
2022/04/05 无线电
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技