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实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
python实现批量注册网站用户的示例
Feb 22 Python
python跳出双层for循环的解决方法
Jun 24 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
python实现两个文件夹的同步
Aug 29 Python
Python笔记之工厂模式
Nov 20 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
详解python中的异常捕获
Dec 15 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 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获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Django REST framework视图的用法
2019/01/16 Python
python重试装饰器的简单实现方法
2019/01/31 Python
Python 学习教程之networkx
2019/04/15 Python
Django之PopUp的具体实现方法
2019/08/31 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
合同专员岗位职责
2013/12/18 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
超市促销活动总结
2014/07/01 职场文书
六一儿童节活动总结
2014/08/27 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
五年级下册复习计划
2015/01/19 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
亮剑观后感300字
2015/06/05 职场文书
Go获取两个时区的时间差
2022/04/20 Golang
MySQL sql模式设置引起的问题
2022/05/15 MySQL