python之高阶函数map,reduce,filter用法

高阶函数的使用能够极大地简化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把结果继续和序列的下一个元素做累积计算,直到参数全部传入过停止。

好了,高阶函数就说到这里了,如有问题,可以留言,大家一起讨论,共同进步!!

你可能感兴趣的:(python基础)