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中dir函数用法分析
Apr 17 Python
Python实现二维有序数组查找的方法
Apr 27 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
简单了解Django模板的使用
Dec 20 Python
Python中实现switch功能实例解析
Jan 11 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
python pandas修改列属性的方法详解
Jun 09 Python
python画一个玫瑰和一个爱心
Aug 18 Python
django 将model转换为字典的方法示例
Oct 16 Python
python 字典的打印实现
Sep 26 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 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
初品cakephp 入门基础
2012/02/16 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php检查页面是否被百度收录
2015/10/28 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python非递归全排列实现方法
2017/04/10 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Python关于反射的实例代码分享
2020/02/20 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
《三个小伙伴》教学反思
2014/04/11 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
给下属加薪申请报告
2015/05/15 职场文书
退税申请报告怎么写
2015/05/18 职场文书
联村联户简报
2015/07/21 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python