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中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
python list转矩阵的实例讲解
Aug 04 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
python实现批处理文件
Jul 28 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 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 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python中的文件和目录操作实现代码
2011/03/13 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
python实现用户登录系统
2016/05/21 Python
实践Vim配置python开发环境
2018/07/02 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Python简易版停车管理系统
2019/08/12 Python
python实现猜数字游戏
2020/03/25 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
PHP经典面试题
2016/09/03 面试题
金鑫耀Java笔试题
2014/09/06 面试题
广告设计专业自荐信范文
2013/11/14 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
上班离岗检讨书
2014/09/10 职场文书
初三语文教学计划
2015/01/22 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
Nginx的基本概念和原理
2022/03/21 Servers