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实现根据月份和日期得到星座的方法
Mar 27 Python
Python中的各种装饰器详解
Apr 11 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
python3爬虫之设计签名小程序
Jun 19 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
Django中提示消息messages的设置方式
Nov 15 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
Django url 路由匹配过程详解
Jan 22 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php 表单数据的获取代码
2009/03/10 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
php的4种常用运行方式详解
2016/12/22 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
jQuery操作cookie的示例代码
2019/06/05 jQuery
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
销售总监岗位职责
2014/01/04 职场文书
网络营销计划书
2015/01/17 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
二手房购房意向书
2015/05/09 职场文书