python学习38:高阶函数,map和reduce的简单介绍
原创
©著作权归作者所有:来自51CTO博客作者wx631a9cd48516d的原创作品,请联系作者获取转载授权,否则将追究法律责任
高阶函数就是把函数名(函数名本身也是变量)作为参数传入另外的函数中计算,传入的函数,可以是系统函数,也可以是自定义函数,如下:
def AddAbs(x,y,f):
return f(x)+f(y)
z = AddAbs(-10,10,abs)
print(z)
def TestF(t):
return t * t
z = AddAbs(-10,10,TestF)
print(z)
运行结果:
============================= RESTART: E:/abs.py =============================
20
200
两个高阶函数:map和reduce
import functools
# from functools import reduce
list1 = [1,2,3,4,5,6]
def SquL(x):
return x * x
def AddL(x,y):
return x + y
print(list1)
new_list1 = map(SquL,list1)
print(new_list1)
print(list(new_list1))
new_str1 = functools.reduce(AddL,list1)
print(new_str1)
运行结果:
============================= RESTART: E:/abs.py =============================
[1, 2, 3, 4, 5, 6]
<map object at 0x000001C0627BDFD0>
[1, 4, 9, 16, 25, 36]
21
Map其实就是建立一种映射关系。map有两个输入参数,一个是传入的函数(映射关系建立的函数),另外一个是生成式(映射的结果),比如像列表。廖雪峰网站上说,map如果传入一个列表,会返回一个新的列表,但是我觉得说的有问题,可以看到上面的代码,如果直接打印new_list1是打印不出来的,还需要加一个list()函数转换一下。
reduce一种迭代关系,前面两个元素的结果充当下一轮的两个元素的其中一个,依次类推。
参考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317852443934a86aa5bb5ea47fbbd5f35282b331335000