python之高阶函数

今天带大家了解一下两个高阶函数,学会之后可以让你的代码更加的简洁,逼格更高。

map()

map()函数接受两个参数,一个是函数,一个是可迭代对象iterable。map函数将传入的函数依次作用到可迭代对象的每个序列,并把结果作为新的迭代器对象iterator返回。

举个例子:有一个函数 f(x) = x^2 ,要把这个函数作用于一个list[1,2,3,4,5,6,7,8,9]上,就可以用map()函数实现。

心想这样就好了,可结果

出现了这个,有错误不要紧,我们来分析一下。首先来看一下定义,一看就发现了,map()函数返回的是一个迭代器,迭代器是一个惰性序列,需要计算出来,于是我们调用list() 函数把它计算出来。

结果:

正是想要的。

那你可能会问了,我不用map()函数一样可以把结果写出来。

没错,这样也可以,但这样写你能一下子就知道把一个函数f(x)作用于一个序列,并返回结果吗。

所以map()作为高阶函数,事实上把运算规则抽象了,不但可以简单的计算f(x) = x^2 , 还可以计算更加复杂的函数

把数字转化成字符串

只需要一行代码,是不是很简单

reduce()

再来看看reduce()函数。reduce把一个函数作用于一个序列[*1,*2,*3]上,这个函数接受两个参数,reduce把结果继续和序列的下一个元素做积累运算,效果就是

不太好理解,举个例子

自己在多写几个例子加深一下印象就会慢慢理解,当然求和没必要用reduce函数,要不然就大材小用了。python中内置函数sum()很方便的。

要考虑把序列[1,2,3,4]变成1234,reduce函数就派上用场了

怎么样,是不是很方便

最后我们写一个转换字符串的函数

这个函数可能不是那么好理解,不要着急,多思考,你会明白的。

来做个练习

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:

总结

今天的复习就到这里,觉得不错请点个赞。希望你多加练习,一定要多写才会懂。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G0GUT000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券