python中的sort方法使用详解


Posted in Python onJuly 25, 2014

Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明:

一、基本形式
列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

x = [4, 6, 2, 1, 7, 9]
x.sort()
print x # [1, 2, 4, 6, 7, 9]

如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本

另一种获取已排序的列表副本的方法是使用sorted函数:

x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print y #[1, 2, 4, 6, 7, 9]
print x #[4, 6, 2, 1, 7, 9]

sorted返回一个有序的副本,并且类型总是列表,如下:

print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']

二、自定义比较函数

可以定义自己的比较函数,然后通过参数传递给sort方法:

def comp(x, y):
if x < y:
return 1
elif x > y:
return -1
else:
return 0

nums = [3, 2, 8 ,0 , 1]
nums.sort(comp)
print nums # 降序排序[8, 3, 2, 1, 0]
nums.sort(cmp) # 调用内建函数cmp ,升序排序
print nums # 降序排序[0, 1, 2, 3, 8]

三、可选参数

sort方法还有两个可选参数:key和reverse

1、key在使用时必须提供一个排序过程总调用的函数:

x = ['mmm', 'mm', 'mm', 'm' ]
x.sort(key = len)
print x # ['m', 'mm', 'mm', 'mmm']

2、reverse实现降序排序,需要提供一个布尔值:

y = [3, 2, 8 ,0 , 1]
y.sort(reverse = True)
print y #[8, 3, 2, 1, 0]
Python 相关文章推荐
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
python编程开发之textwrap文本样式处理技巧
Nov 13 Python
python+flask实现API的方法
Nov 21 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
在pycharm中显示python画的图方法
Aug 31 Python
Python列表元素常见操作简单示例
Oct 25 Python
Python实现直播推流效果
Nov 26 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
TensorFlow固化模型的实现操作
May 26 Python
Python turtle库的画笔控制说明
Jun 28 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 Python
python实现监控linux性能及进程消耗性能的方法
Jul 25 #Python
python的dict,set,list,tuple应用详解
Jul 24 #Python
Python常见数据结构详解
Jul 24 #Python
python海龟绘图实例教程
Jul 24 #Python
python实现绘制树枝简单示例
Jul 24 #Python
python实现进程间通信简单实例
Jul 23 #Python
Python数组条件过滤filter函数使用示例
Jul 22 #Python
You might like
功能强大的php分页函数
2016/07/20 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
极简主义法编写JavaScript类
2017/11/02 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
python简单商城购物车实例代码
2018/03/15 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
户外婚礼策划方案
2014/02/08 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
Java实现房屋出租系统详解
2021/10/05 Java/Android
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers