python函数式编程与四个高阶函数

高阶函数:把函数作为参数传入
def func1(x,y,f):
    return f(x)+f(y)
num = func1(-10,2,abs)  #abs是绝对值
print(num)
注意:把函数作为参数传入的时候,不要在传入函数后面接括号
 abs代表这个取绝对值函数   abs()表示调用这个函数,获取它的返回值

1.map映射函数

接收两个参数,第一个参数是要作用的函数,第二个是要作用的可迭代对象
返回值是一个迭代器
lst=[1,2,3,4,5,6,7]
lst2=[10,100,1000,10000,120]

def f1(x,y):
    return x + y
print(list(map(f1,lst,lst2)))

输出:[11, 102, 1003, 10004, 125]

#map后面接受多个可迭代对象,那传入几个可迭代对象,前面的函数就要接收几个参数

2.filter过滤函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

概念比较抽象,看例子:

[1,2,5,6,9,3,7]过滤,去掉偶数,保留奇数
print(list(filter(lambda x:x%2,[1,2,5,6,9,3,7])))

3.sorted排序

可以接收一个key函数来实现自定义的排序
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。
对比原始的list和经过key=abs处理过的list:
例题:
按绝对值大小排序 :[3,6, 5, -12, 9, -21]
结果:[5, 9, -12, -21, 36]
执行语句: sorted([36, 5, -12, 9, -21], key=abs)
1. 原始字符:
list = [36, 5, -12, 9, -21]
2. 经过key-abs对应得到:
[36, 5, 12, 9, 21]
3. 按照keys-abs排序结果:
[5, 9, 12, 21, 36]
4. 原始字符串最终结果:
[5, 9, -12, -21, 36]

3.reduce

reduce() 函数会对参数序列中元素进行累积。

与其他三个高阶函数不一样的是,reduce需要调用模块来用:from functools import reduce

  例题:将列表 [1,3,5,7,9] --> 13579

from functools import reduce      #切记要调用模块
print(reduce(lambda x,y: x*10 + y, [1,3,5,7,9]))  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值