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实现清屏的方法
Apr 30 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
Python heapq使用详解及实例代码
Jan 25 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
pyQt5实时刷新界面的示例
Jun 25 Python
python 读取数据库并绘图的实例
Dec 03 Python
详解Python在使用JSON时需要注意的编码问题
Dec 06 Python
python实现四人制扑克牌游戏
Apr 22 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
jquery中实现标签切换效果的代码
2011/03/01 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
js获取域名的方法
2015/01/27 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
python多线程操作实例
2014/11/21 Python
Python中pygame安装方法图文详解
2015/11/11 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
JSF界面控制层技术
2013/06/17 面试题
办公室文员工作职责
2014/01/31 职场文书
质量管理标语
2014/06/12 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
蓬莱阁导游词
2015/02/04 职场文书
正规借条模板
2015/05/26 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL