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把结果继续和序列的下一个元素做累积计算,直到参数全部传入过停止。

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值