今天带大家了解一下两个高阶函数,学会之后可以让你的代码更加的简洁,逼格更高。
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']:
总结
今天的复习就到这里,觉得不错请点个赞。希望你多加练习,一定要多写才会懂。
领取专属 10元无门槛券
私享最新 技术干货