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使用matplotlib填充图形指定区域代码示例
Jan 16 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
使用django-guardian实现django-admin的行级权限控制的方法
Oct 30 Python
python实现汽车管理系统
Nov 30 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
python提取log文件内容并画出图表
Jul 08 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
Python super()函数使用及多重继承
May 06 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
python绘制箱型图
Apr 27 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/01/02 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
PHP 字符串 小常识
2009/06/05 PHP
PHP解决中文乱码
2017/04/28 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Django如何自定义分页
2018/09/25 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
增大python字体的方法步骤
2020/07/05 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
业务代表的岗位职责
2013/11/16 职场文书
学习委员自我鉴定
2014/01/13 职场文书
洗发水广告词
2014/03/13 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
品质标语大全
2014/06/21 职场文书
物流管理专业自荐信
2014/06/23 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
滴水洞导游词
2015/02/10 职场文书
运动与健康自我评价
2015/03/09 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang