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 13 Python
Python异常处理总结
Aug 15 Python
python中二维阵列的变换实例
Oct 09 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
python通过opencv实现批量剪切图片
Nov 13 Python
PyQt5每天必学之切换按钮
Aug 20 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
python多进程读图提取特征存npy
May 21 Python
Python高级property属性用法实例分析
Nov 19 Python
python实现低通滤波器代码
Feb 26 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 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使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
php报错502badgateway解决方法
2019/10/11 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
再探JavaScript作用域
2014/09/24 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python操作Jira库常用方法解析
2020/04/10 Python
Django实现celery定时任务过程解析
2020/04/21 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
小学生优秀评语大全
2014/04/22 职场文书
学校三节实施方案
2014/06/09 职场文书
先进党支部申报材料
2014/12/24 职场文书
户外亲子活动总结
2015/05/08 职场文书
医院党建工作总结2015
2015/05/26 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python