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实现一个简单的多线程TCP服务器的教程
May 05 Python
利用python发送和接收邮件
Sep 27 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
python取均匀不重复的随机数方式
Nov 27 Python
Python代码块及缓存机制原理详解
Dec 13 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
jQuery select控制插件
2009/08/17 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
js实现碰撞检测
2021/01/29 Javascript
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
对公司的意见和建议
2015/06/04 职场文书
小鞋子观后感
2015/06/05 职场文书