【Python】高阶函数介绍
其实函数可以作为变量,之前学过C++,对于这种用法并不奇怪。无非就是函数充当变量,可以传入函数而已。
下面分别介绍 Python 中常见的高阶函数:map/reduce, filter, sorted
map###
map() 函数接收两个函数,一个是函数,一个是序列(可迭代均可), map 将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回
举个例子:将 list 中所有的数字转化为字符串:
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce###
reduce() 把一个函数作用在一个序列[x1, x2, x3.....] 上,这个必须接收两个函数,reduce 将结果和序列的下一元素做累积计算
例子1:将序列 [1, 3, 5, 7, 9] 变换成整数 13579。
>>>reduce(lambda x, y : x * 10 + y, [1, 3, 5, 7, 9])
13579
filter###
filter() 函数用于过滤序列。filter() 接收一个函数和 一个序列 。与 map() 不同的是,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 或 False 决定保留还是丢弃该元素。
例子: 将一个序列中的空字符删掉。
>>>filter(lambda s : s and s.strip(), ['A', '', 'B', None, 'C', ' '])
['A', 'B', 'C']
sorted###
>>>sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]
传入自定义函数可以实现自定义排序。
例子1:排序应该忽略大小写,按照字母序排序。
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 < u2:
return -1
if u1 > u2:
return 1
return 0
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], lambda s1, s2 : s1.upper() -s2.upper())
['about', 'bob', 'Credit', 'Zoo']
另外数字反序有个很好的方法:
sorted([36, 5, 12, 9, 21][::-1]
【Python】高阶函数介绍的更多相关文章
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- 用一个简单的例子来理解python高阶函数
============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...
- Python高阶函数及函数柯里化
1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...
- python——高阶函数:高阶函数
python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...
- python高阶函数的使用
目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...
- python 高阶函数之filter
前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...
- Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍
参考: 函数式编程 高阶函数 Note A.函数式编程(Functional Programming)介绍 1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任 ...
- python 高阶函数 与关键字参数
修饰器 之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数 ...
- Python 简明教程 --- 16,Python 高阶函数
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas ...
随机推荐
- C#windows应用程序打包(VS2010+SQLServer2008)
C#windows应用程序打包(VS2010+SQLServer2008) 开发环境:VS2010+SQL Server 2008 操作系统:win7_32bit 旗舰版 开发语言:C# 项目名称:学 ...
- springBoot 整合 RabbitMQ 的坑
1.Consumer raised exception, processing can restart if the connection factory supports it. Exception ...
- 哪个地图API 好用
之前我们能用的地图软件还寥寥无几,而且一个地图包动辄就上百M,还不支持GPS,没有实时路况,没有卫星图,一年也未必更新一次.现如今的地图功能已经极大丰富了,开发者的项目选择性也很大,地图哪个受众比较多 ...
- WeX5基础
最近在研究微信app开发,使用的是WeX5,在这里把一些基础知识点记录下来,忘记了可以翻阅查看. 一:开发后端服务 1.建立数据源:窗口--首选项--studio配置--数据源--增加--数据源类型选 ...
- HDFS数据块
磁盘也是由数据块组成的,一般默认大小是512字节,构建磁盘之上的文件系统一般是磁盘块的整数倍. HDFS也是采用块管理的,但是比较大,在Hadoop1.x中默认大小是64M,Hadoo ...
- goland 使用简单配置-不断更新
1.格式化代码 Ctrl+Alt+L 格式化代码 2.快捷键可能被占用 用tools-file watchers file->setting->tools->file watche ...
- 解题报告:hdu 1005 number subsequent
2017-09-06 20:35:59 writer:pprp 本来以为这是一道水题,写了一个递归就赶紧交上去了, 结果超时了,看看数据范围100000000,肯定把栈给爆了 想用记忆化的方法,但是虽 ...
- 位运算 进制转化 STL中bitset用法
2017-08-17 16:27:29 writer:pprp /* 题目名称:输入十进制以二进制显示 程序说明:同上 作者:pprp 备注:无 日期:2017/8/17 */ #include &l ...
- Python学习札记(七) Basic4 条件判断
参考:条件判断 Note 1.Python的条件判断关键字与C语言类似,if.else,以及elif,相当于C语言中的else if. 2.Python与C语言不一样的是,使用缩进来判断语句是否属于条 ...
- 测试mysql
sysbench 测试mysql TODO emacs