python函数式编程工具map、filter和reduce

函数式编程工具map、filter和reduce:对序列应用一些函数工具
map:在列表中映射函数,对列表做操作,需list转化输出列表【map(匿名函数,列表)】
filter:在列表中映射函数,对输出进行筛选,需list转化输出列表 【filter(匿名函数,列表)】
reduce:对列表的值进行计算,用变量保存结果,functools模块可用并不在内置作用域【reduce(匿名函数,列表)】

实例1:结合匿名函数lambda

from functools import reduce#reduce不在内置作用域需要导入模块
Lis=[1,2,3]

def func(x):
    return x+1

List=list(map(func,Lis))#map函数将列表中的每一个元素传入函数中并返回一个新列表
List1=list(map((lambda x:x+1),Lis))#匿名函数应用到map实现对列表的操作,等效for循环
List2=list(filter((lambda x:x>0),range(-4,4)))#匿名函数应用到filter实现对列表的筛选
List3=reduce((lambda x,y:x+y),[1,2,9])#匿名函数应用到reduce中实现对列表的值做计算操作

print(List,List1,List2,List3)
D:\py\venv\Scripts\python.exe D:/py/func.py
[2, 3, 4] [2, 3, 4] [1, 2, 3] 12

Process finished with exit code 0

 实例2:编写函数实现map、filter和reduce相应的功能

def mymap(func,list):#自定义函数结合匿名函数实现map功能
    if len(list)==0:
        return None
    L=[]
    for x in list:
        L.append(func(x))#匿名函数返回值追加
    return  L

def myfilter(func,list):#自定义函数结合匿名函数实现filter功能
    if len(list)==0:
        return None
    L=[]
    for x in list:
        if func(x):#匿名函数返回值判断追加
            L.append(x)
    return L

def myreduce(func,list):#自定义函数结合匿名函数实现reduce功能
    if len(list)==0:
        return 0
    x = list[0]#取第一个值
    for y in list[1:]:
        x=func(x,y)#匿名函数结果追加第一个值
    return x

test=mymap(lambda x:x+1,[1,2,3])
test1=myfilter((lambda x:x>0),[-3,-2,-1,0,1,2,3])
test2=myreduce((lambda x,y:x+y),[1,2,9])

print(test,test1,test2)
D:\py\venv\Scripts\python.exe D:/py/func.py
[2, 3, 4] [1, 2, 3] 12

Process finished with exit code 0

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值