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 IDLE加上自动补全和历史功能
Nov 30 Python
用python写的一个wordpress的采集程序
Feb 27 Python
python实现中文转换url编码的方法
Jun 14 Python
python数字图像处理之高级滤波代码详解
Nov 23 Python
Python测试人员需要掌握的知识
Feb 08 Python
python 使用值来排序一个字典的方法
Nov 16 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
python实现简单坦克大战
Mar 27 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python链表类中获取元素实例方法
Feb 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使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
办公室文秘自我鉴定
2013/09/21 职场文书
考核评语大全
2014/04/29 职场文书
安全生产计划书
2014/05/04 职场文书
2014组织生活会方案
2014/05/19 职场文书
安全横幅标语
2014/06/09 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis