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使用正则表达式检测密码强度源码分享
Jun 11 Python
python实现中文转换url编码的方法
Jun 14 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
python如何实现不可变字典inmutabledict
Jan 08 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
通过Python实现一个简单的html页面
May 16 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
python中类与对象之间的关系详解
Dec 16 Python
python time.strptime格式化实例详解
Feb 03 Python
Python学习之时间包使用教程详解
Mar 21 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静态文件生成类实例
2014/11/29 PHP
laravel学习教程之存取器
2016/07/30 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
同事打架检讨书
2014/02/04 职场文书
工程进度款催款函
2015/06/24 职场文书
篮球赛新闻稿
2015/07/17 职场文书
Python 多线程处理任务实例
2021/11/07 Python
Java异常体系非正常停止和分类
2022/06/14 Java/Android