高阶函数的使用能够极大地简化python算法的复杂度(主要是逼格高了!!)。好了,不废话,直接看用法。
map函数
---它是将传入的函数依次作用到序列的每个元素上,并把结果作为新的Iterator
返回。
举例说明:
# map函数
testList = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def square(x):
return x * x
list1 = list(map(square, testList))
print(list1)
这样,大家就很容易看出来map的用法了吧。
哦,对了,这里要注意的一小点问题是:在使用map进行映射的时候,传入的函数只写函数名square,不需要传入参数值x。
filter函数
---从某种意义上来讲,filter函数和map函数很类似,他们都是将函数作用于给定序列的每一个元素上。但是,filter和map的不同点在于哪里呢??我们先来看下面的一个简单的例子。
# filter
testList = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def is_odd(x):
return x % 2 == 1
list2=list(filter(is_odd,testList))
print(list2)
返回值为[1, 3, 5, 7, 9]
那么,我们可以将filter函数的作用总结为:
filter()
把传入的函数依次作用于给定序列的每个元素上,然后根据函数的返回值(True or
False
)决定保留还是丢弃该元素。最终输出的是符合传入函数的要求的值。
reduce函数
reduce函数和map,filter都不同。它每次传入2个参数,并将这两个参数传入函数中。然后将得到的值作为第一个参数,再传入一个新的参数,继续进行下一步的运算,直至参数全部传入过停止。
看下面的例子可能更好理解:
from functools import reduce
testList = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def add(x,y):
return 10*x+y
list3=reduce(add,testList)
print(list3)
得到的返回值为123456789。
这里我们可以将reduce函数的功能进一步总结为:这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算,直到参数全部传入过停止。
好了,高阶函数就说到这里了,如有问题,可以留言,大家一起讨论,共同进步!!