zoukankan      html  css  js  c++  java
  • 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))
  • 相关阅读:
    洛谷 P1578 奶牛浴场 题解
    LOJ167 康托展开 题解
    三校联训 【NOIP模拟】寻找
    洛谷 P1809 过河问题 题解
    有关多边形面积的总结
    LOJ 103 字串查找 题解
    洛谷 P2384 最短路 题解
    POJ 2492 A Bug's Life 题解
    LOJ 10214 计算器 题解
    洛谷 P2868 [USACO07DEC]观光奶牛Sightseeing Cows 题解
  • 原文地址:https://www.cnblogs.com/zatusnemiku/p/13121172.html
Copyright © 2011-2022 走看看