python创业成功的案例-用一个简单的例子来理解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(lambdax: x.strip(),mailTo)#结果为, ["", "a@corp.com", "", "c@corp.com", "e@corp.com", ""]

#step 3: 去除list中的那几个空邮箱地址了

defexceptEmpty(x,y):if x=="":returnyelif y=="":returnxelse: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` 语句.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值