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 31 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
Python操作MySQL数据库的方法
Jun 20 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
python实现简单井字棋游戏
Mar 04 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
python 对图片进行简单的处理
Jun 23 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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/11/24 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php导入模块文件分享
2015/03/17 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
Python实现简单拆分PDF文件的方法
2015/07/30 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
python连接mysql有哪些方法
2020/06/24 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
python的setattr函数实例用法
2020/12/16 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
写给女朋友的道歉信
2014/01/08 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
公司出差管理制度范本
2015/08/05 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
Python获取字典中某个key的value
2022/04/13 Python
SQL中的连接查询详解
2022/06/21 SQL Server