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入门篇之数字
Oct 20 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
OpenCV 模板匹配
Jul 10 Python
Python内存管理实例分析
Jul 10 Python
django的ORM操作 增加和查询
Jul 26 Python
Numpy的简单用法小结
Aug 28 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
python小白切忌乱用表达式
May 29 Python
python Gabor滤波器讲解
Oct 26 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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桌面中心(二) 数据库写入
2007/03/11 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
python发布模块的步骤分享
2014/02/21 Python
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
python中Genarator函数用法分析
2015/04/08 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python反射用法实例简析
2017/12/22 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
python3实现mysql导出excel的方法
2019/07/31 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
《明天,我们毕业》教学反思
2014/04/24 职场文书
食堂标语大全
2014/06/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
治安消防安全责任书
2014/07/23 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
谢师宴学生致辞
2015/07/27 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript