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的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python数组定义方法
Apr 13 Python
Python设计模式之原型模式实例详解
Jan 18 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Python模块future用法原理详解
Jan 20 Python
Django ValuesQuerySet转json方式
Mar 16 Python
Pycharm打开已有项目配置python环境的方法
Jul 03 Python
详解python 内存优化
Aug 17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
Python数据分析之pandas函数详解
Apr 21 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 Hash函数,增强密码安全
2011/02/25 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
Python探索之Metaclass初步了解
2017/10/28 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
Python requests库用法实例详解
2018/08/14 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
PyQt5 多窗口连接实例
2019/06/19 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
国家励志奖学金获奖感言
2014/01/09 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
入党自传范文2015
2015/06/26 职场文书
bose降噪耳机音能消除人声吗
2022/04/19 数码科技