码迷,mamicode.com
首页 > 其他好文 > 详细

filter,map和reduce函数

时间:2020-06-13 19:24:58      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:逻辑   字符串   要求   垃圾   合并   返回值   cal   code   默认   

‘‘‘
匿名函数:
    定义一个匿名函数:
        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函数

标签:逻辑   字符串   要求   垃圾   合并   返回值   cal   code   默认   

原文地址:https://www.cnblogs.com/zatusnemiku/p/13121172.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!