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判断图片宽度和高度后删除图片的方法
May 22 Python
Django中使用locals()函数的技巧
Jul 16 Python
在Python的Django框架中编写编译函数
Jul 20 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
python word转pdf代码实例
Aug 16 Python
详解python播放音频的三种方法
Sep 23 Python
python内打印变量之%和f的实例
Feb 19 Python
基于Python 函数和方法的区别说明
Mar 24 Python
什么是Python装饰器?如何定义和使用?
Apr 11 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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 Mysql编程之高级技巧
2008/08/27 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
js如何获取object类型里的键值
2014/02/18 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
ES6中Array.includes()函数的用法
2017/09/20 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
web.py在模板中输出美元符号的方法
2014/08/26 Python
zookeeper python接口实例详解
2018/01/18 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
Python扫描端口的实现
2021/01/25 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
班子成员四风问题自我剖析材料
2014/09/29 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python