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实现在pickling的时候压缩的方法
Sep 25 Python
python实现TCP服务器端与客户端的方法详解
Apr 30 Python
Windows中安装使用Virtualenv来创建独立Python环境
May 31 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
vscode调试django项目的方法
Aug 06 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
Matplotlib配色之Colormap详解
Jan 05 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 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 默默经典版本
2009/08/04 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
广告显示判断
2006/08/31 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
Python random模块常用方法
2014/11/03 Python
详解python开发环境搭建
2016/12/16 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
python lambda的使用详解
2021/02/26 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
应届生财务会计求职信
2013/11/05 职场文书
对教师的评语
2014/04/28 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Python基础学习之奇异的GUI对话框
2021/05/27 Python
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python