python高阶函数——sorted排序算法
python 内置的sorted()函数可以对一个list进行排序:
>>> sorted([8,3,8,11,-2])
[-2, 3, 8, 8, 11]
既然说是高阶函数,那么它还可以接受一个key函数来实现自定义的排序,比如按照绝对值大小进行排序:
>>> sorted([8,3,8,11,-9],key=abs)
[3, 8, 8, -9, 11]
key指定的函数将作用于list中的每一个元素上,根据key函数返回的结果进行排序。
来看看字符串排序的问题:
>>> sorted(['abc','Abc','Cba','bAc'])
['Abc', 'Cba', 'abc', 'bAc']
默认的,对于字符串,sorted函数按照ASCII的大小进行排序,因为C<a,大写的C会排在小写的a前面。
如果我们想要达到忽略大小写的排序,只需要更改一下key函数:
>>> sorted(['abc','Abc','Cba','bAc'],key=str.lower)
['abc', 'Abc', 'bAc', 'Cba']
进一步,要进行反向排序,可以传入第三个参数reverse=True:
>>> sorted(['abc','Abc','Cba','bAc'],key=str.lower,reverse=True)
['Cba', 'bAc', 'abc', 'Abc']
sorted()排序的关键在于实现一个映射函数!
练习:一个tuple表示学生的名字和成绩,使用sorted()对这个元祖按照名字排序:
>>> l = [('xiamin',34),('qiang',66),('hong',74),('guan',56)]
>>> def by_name(t):
... return t[0]
...
>>> def by_score(t):
... return t[1]
...
>>> l1 = sorted(l,key=by_name)
>>> l1
[('guan', 56), ('hong', 74), ('qiang', 66), ('xiamin', 34)]
>>> l2 = sorted(l,key = by_score)
>>> l2
[('xiamin', 34), ('guan', 56), ('qiang', 66), ('hong', 74)]
python高阶函数——sorted排序算法的更多相关文章
- python高阶函数sorted
原文 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因 ...
- python学习笔记1 -- 函数式编程之高阶函数 sorted排序
python提供了很强大的内置排序函数,妈妈再也不担心我不会写冒泡排序了呀,sorted函数就是这个排序函数,该函数参数准确的说有四个,sorted(参数1,参数2,参数3,参数4). 参数1 是需要 ...
- python高阶函数的使用
目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...
- Python高阶函数及函数柯里化
1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...
- python 高阶函数、柯里化
高阶函数 First Class Object 函数在python中是一等公民 函数也是对象,可调用的对象 函数可作为普通变量.参数.返回值等等 高阶函数 数学概念 y=g(f(x)) 在数学和计算机 ...
- python 高阶函数之filter
前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...
- 用一个简单的例子来理解python高阶函数
============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- python——高阶函数:高阶函数
python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...
随机推荐
- windows下PyCharm安装及使用 【转自 https://blog.csdn.net/yctjin/article/details/70307933?locationNum=11&fps=1】
一.首先安装pycharm,可以参考这篇文章:http://www.jianshu.com/p/042324342bf4 搭建环境 1.win10_X64,其他Win版本也可以.2.PyCharm版本 ...
- hashtable基础
- ThinkPHP 中 where条件 or,and 同时使用
('a'=1 and 'b'=2) or ('c'=3 and 'd'=4) and 'e'=5 $where_1['a'] = 1; $where_1['b'] = 2; $where_2['c'] ...
- luogu P1356 数列的整数性 |动态规划
题目描述 对于任意一个整数数列,我们可以在每两个整数中间任意放一个符号'+'或'-',这样就可以构成一个表达式,也就可以计算出表达式的值.比如,现在有一个整数数列:17,5,-2,-15,那么就可以构 ...
- SpringBoot使用freemarker模板
导入依赖 <!-- 添加freemarker模版的依赖 --> <dependency> <groupId>org.springframework.boot< ...
- 基于icamera usb2.0的视频采集系统之mt9m001c12stc测评
基于usb2.0的视频采集系统之mt9m001c12stc测评 因为该sensor不带isp,所以不支持白平衡,默认图像彩色颜色会和实际偏离,演示如下 颜色偏绿,所以降低该通道的增益,或者提供其他通道 ...
- ajax来获取JWT的token
AJAX方式获取token需要用
- js中 forEach 和 map 区别
共同点: 1.都是循环遍历数组中的每一项. 2.forEach()和map()里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input. 3.匿名函数中 ...
- 《Java知识应用》Java通过Get和Post实现HTTP请求。
Http请求,是非常常见并且的数据交互方式. 下面讲解:Get和Post的两个实战案例. 用于测试的Action(controller). @RequestMapping(value = " ...
- GHOST CMS - Package.json
Package.json The package.json file is a set of meta data about a theme. package.json 文件是一组关于主题的元数据. ...