用一个简单的例子来理解python高阶函数
============================
用一个简单的例子来理解python高阶函数
============================
最近在用mailx发送邮件, 写法大致如下.
echo 'body'|mailx -s 'title' 'a@corp.com,b@corp.com'
不知什么原因, 在一台机器上只要mailTo中包含空格, 邮件就发送不出去. 所以需要对收件人做规范化处理, 即去除空格, 去除多余的逗号.
这个处理过程使用到了map()和reduce(), 使用情形很简单, 更有助于理解这两个函数的作用.
#原始的mailTo
mailToStr=',a@corp.com ,, c@corp.com,e@corp.com,'
#该字符串中, 有空邮箱地址, 还有邮箱前后带空格 #step 1: 先转换成list
mailTo=mailToStr.split(',')
#结果为, ['', 'a@corp.com ', '', ' c@corp.com', 'e@corp.com', ''] #step 2:对list中元素做trim
mailTo=map(lambda x: x.strip(),mailTo)
#结果为, ['', 'a@corp.com', '', 'c@corp.com', 'e@corp.com', ''] #step 3: 去除list中的那几个空邮箱地址了
def exceptEmpty(x,y):
if x=='':
return y
elif y=='':
return x
else:
return x+','+y mailToStr=reduce(exceptEmpty,mailTo)
#mailToStr的结果是 'a@corp.com,c@corp.com,e@corp.com'
============================
总结一下 map/reduce/zip/filter几个高阶函数的作用
============================
map()函数, 我们需要提供2个参数, 第1个是lambda表达式或函数, 第2个参数是个list,
map()的作用是, 将list中的每个元素, 带到lambda表达式中求值, 最后再组成一个list.
比如,map(lambda x: x.strip(),['a@corp.com', 'c@corp.com']), 对每个元素都做了trim
reduce()函数, 我们需要提供2个参数, 第1个是lambda表达式或函数, 第2个参数是个list,
reduce()作用是, 将list中的相连的两个元素, 带入到lambda表达式中做"递归"求值, 最后生成一个scalar值.
zip()的作用是, 将两个list中的元素进行编织mesh.
zip([1,2,3],['a','b'])
#结果为[(1, 'a'), (2, 'b')]
filter()的作用是很直观, 对于给定的list, 按照我们设定的lambda表达式条件, 过滤掉不符合的元素.
filter(lambda x: x>0, [-1,0,1,2])
#结果为[1,2]
补充一点, lambda 表达式, 冒号后为一个表达式, 不是 `return` 语句.
用一个简单的例子来理解python高阶函数的更多相关文章
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- python高阶函数的使用
目录 python高阶函数的使用 1.map 2.reduce 3.filter 4.sorted 5.小结 python高阶函数的使用 1.map Python内建了map()函数,map()函数接 ...
- python高阶函数sorted
原文 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因 ...
- Python高阶函数及函数柯里化
1 Python高阶函数 接收函数为参数,或者把函数作为结果返回的函数为高阶函数. 1.1 自定义sort函数 要求:仿照内建函数sorted,自行实现一个sort函数.内建函数sorted函数是返回 ...
- python——高阶函数:高阶函数
python高阶函数 00初识高阶函数 一等公民 函数在python中是一等公民(First-Class Object),同样和变量一样,函数也是对象,只不过是可调用的对象,所以函数也可以作为一个普通 ...
- python 高阶函数之filter
前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter. 先看一下filter() 函数签名 >>> ...
- Python高阶函数--map
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于lis ...
- python 高阶函数 与关键字参数
修饰器 之前我一直有一个疑惑,就是修饰器里面对函数的操作为什么不能直接写进函数里面就好了吗?何必这么麻烦呢,当我进一步理解之后,原来修饰器的作用就是完成那些不能写进函数里面的功能的,好比必须要等到函数 ...
- Python高阶函数(Map、Reduce、Filter)
Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回. 举例说明 比如我们有一个函数f(x)=x2,要把这个函数作用 ...
随机推荐
- uva11426 gcd、欧拉函数
题意:给出N,求所有满足i<j<=N的gcd(i,j)之和 这题去年做过一次... 设f(n)=gcd(1,n)+gcd(2,n)+......+gcd(n-1,n),那么answer=S ...
- joomla \libraries\joomla\session\session.php 反序列化截断畸形字符串导致对象注入漏洞
catalog . 漏洞描述 . PHP SESSION持久化 . PHP 序列化/反序列化内核实现 . 漏洞代码分析 . POC构造技巧 . 防御方案 . Code Pathc方案 1. 漏洞描述 ...
- 强大的windbg定位内存泄露,两句命令搞定!
1.简单配置在windbg程序目录下有个gflags.exe,运行后设置: 运行CMD.EXE,输入"D:\Debugging Tools for Windows (x86)\gflags. ...
- JavaWeb学习总结-07 Filter 学习和使用
一 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- JavaWeb学习总结-05 Servlet 学习和使用(01)
一 Servlet的原理 1 Servlet 的创建 当Servlet容器启动web应用时,需要立即加载Servlet时: Servlet容器启动web应用时,将按照指定的顺序初始化Servlet,需 ...
- JQuery 学习笔记(01)
JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Oper ...
- 如何写出优雅的css代码 ?
如何写出优雅的css代码 ? 对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于 ...
- omnet++5.0安装使用
1.下载Windows安装包,5.0的omnetpp-5.0-src-windows.zip 2.解压到d盘 3.D:\omnetpp-5.0\doc找到这个目录,下面有个InstallGuide.p ...
- MVC JsonResult的用法
本文导读:当客户端调用某个Action方法并希望以JSON的格式返回请求的数据时,ASP.NET MVC需要有一种机制将CLR对象转换成JSON格式予以响应,而这可以通过JsonResult来解决.下 ...
- 使用Navicat导入导出表的数据做测试(转载)
当我们对MySQL数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...