filter,map和reduce函数
Posted zatusnemiku
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了filter,map和reduce函数相关的知识,希望对你有一定的参考价值。
‘‘‘ 匿名函数: 定义一个匿名函数: lambda 形参列表 : 函数处理逻辑(返回值) 匿名函数通常与其他函数结合使用 当需要返回多个返回值时,需要将所有返回值组成元组,列表或者字符串的形式返回 ‘‘‘ ‘‘‘ def calc(x): return x+1 如上所示定义了一个简单的传入参数值加一的函数, 我们可以通过匿名函数一句来实现这个函数 等效于: lambda x : x+1 ‘‘‘ # lambda x,y:(x+1,y+1) # s=lambda x,y:‘x+1,y+1‘# x+1,y+1 # print(s(2,5)) # ‘‘‘ 需求:将所有数据中不符合要求的项去除,留下符合要求的选项 一、垃圾版 ‘‘‘ # filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] # result_l=[] # for filtrate in filtrate_l: # if filtrate.endswith(‘v‘): # result_l.append(filtrate) # print (result_l) ‘‘‘ 二、高级版 ‘‘‘ # filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] # def map_test(arge): # result_l=[] # for filtrate in arge: # if filtrate.endswith(‘v‘): # result_l.append(filtrate) # return result_l # print(map_test(filtrate_l)) ‘‘‘ 三、进阶版 ‘‘‘ # filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] # def fun_do(arge): # return arge.endswith(‘v‘) # # def map_test(func,arge): # result_l=[] # for filtrate in arge: # if func(filtrate): # result_l.append(filtrate) # return result_l # print(map_test(fun_do,filtrate_l)) ‘‘‘ 四、终极版:将匿名函数作为参数传入函数 ‘‘‘ # filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] # def map_test(func,arge): # result_l=[] # for filtrate in arge: # if func(filtrate): # result_l.append(filtrate) # return result_l # # print(map_test(lambda a:a.endswith(‘v‘),filtrate_l)) ‘‘‘ 我们写的完成上面需求的函数,在python内部已经帮我们定义了这样一个函数 即filter()函数,filter函数是将一个可迭代对象以给定的方式筛选出我们 想要的值,有所不同的是filter的结果为一个迭代器 ‘‘‘ # filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] # print(list(filter(lambda a:a.endswith(‘v‘),filtrate_l))) # ‘‘‘ # map函数:将传入的可迭代对象每个元素一给定的方式进行处理 # def map (fanc,arge): # result=[] # for a in arge: # resule.append(func(a)) # return result # # ‘‘‘ # filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] # print(list(map(lambda a:a+‘ like‘,filtrate_l))) ‘‘‘ reduce 函数:将传入的可迭代对象以指定方式将所有元素合并为一个元素 可传入初始值,默认为空 def reduce_test (func,arge,init=None): if init==None: i=arge.pop(0) else: i=init for a in arge: i=func(i,a) return i ‘‘‘ from functools import reduce filtrate_l=[‘miku_v‘,‘rin_v‘,‘ran_v‘,‘ruka_v‘,‘misaka_a‘,‘yuu_a‘] print(reduce(lambda a,b:a+" "+b,filtrate_l))
以上是关于filter,map和reduce函数的主要内容,如果未能解决你的问题,请参考以下文章
Python高阶函数_map/reduce/filter函数