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 09 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
python组合无重复三位数的实例
Nov 13 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
Jan 29 Python
python输入错误后删除的方法
Oct 12 Python
django迁移文件migrations的实现
Mar 31 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
Python venv虚拟环境配置过程解析
Jul 08 Python
Python 必须了解的5种高级特征
Sep 10 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
python实现简单遗传算法
2018/03/19 Python
python实现归并排序算法
2018/11/22 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
客服部工作职责范本
2014/02/14 职场文书
七一党日活动总结
2014/07/08 职场文书
诉讼授权委托书
2014/10/15 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL