python中abs&map&reduce简介
abs函数
可以把函数本身赋值给变量
>>>f=abs
变量可以指向函数
>>>f=abs
>>>f(-10)
10
abs函数实际上是定义在importbuiltins模块中的,所以要让修改abs变量的指向在其它模块也生效,要用importbuiltins;builtins.abs=10
传入函数
一个函数接收另一个函数作为参数,这种函数就称之为高阶函数。
defadd(x,y,f): returnf(x)+f(y)
当我们调用add(-5,6,abs)时,参数x,y和f分别接收-5,6和abs,根据函数定义,我们可以推导计算过程为:
x=-5 y=6 f=abs f(x)+f(y)==>abs(-5)+abs(6)==>11
map
map()函数接收两个参数,一个是函数,一个是Iterable,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
>>>deff(x): ...returnx*x ... >>>r=map(f,[1,2,3,4,5,6,7,8,9]) >>>list(r) [1,4,9,16,25,36,49,64,81]
map()传入的第一个参数是f,即函数对象本身
通过list()函数让它把整个序列都计算出来并返回一个list
把这个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把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)
把序列[1,3,5,7,9]变换成整数13579,reduce就可以派上用场:
>>>fromfunctoolsimportreduce >>>deffn(x,y): ...returnx*10+y ... >>>reduce(fn,[1,3,5,7,9]) 13579
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。