zoukankan      html  css  js  c++  java
  • filter map reduce函数的使用

    #filter("处理逻辑","可迭代对象") 把可迭代对象依次处理逻辑处理,如果值为真就返回值,值为假就不返回;
    li = ['testA','yerA','pp']
    
    print(list(filter(lambda x:x.endswith('A'),li)))   #['testa', 'yera']

     

    #自己写函数实现map函数过程:
    li = [1,2,3,4,5,6]  #假如需要把li内容全部加1操作
    def map_test(func,array):
        ret = []
        for i in array:
            res = func(i)   #func = lambda x:x+1  ; func(i)就是执行lambda函数 并把i的值传给lambda处理
            ret.append(res)
        return ret
    
    result = map_test(lambda x:x+1,li)
    print(result)
    
    
    #map函数使用
    # map("处理逻辑","可迭代对象") 把可迭代对象依次for循环传值给lambda处理
    print(map(lambda x:x+1,li))   #<map object at 0x050A8310>生成一个可迭代对象
    map_ret = list(map(lambda x:x+1,li))  #用list处理成列表
    print(map_ret)      #[2, 3, 4, 5, 6, 7]
    
    
    #map函数不是必须要用lambda函数来处理逻辑;也可以用自己定义的逻辑来处理
    def add(x):
        return x**2
    s = list(map(add,li))   #这里面add是自己的定义的处理逻辑
    print(s)    #[1, 4, 9, 16, 25, 36]
    #python 2 reduce可以直接用
    #python 3  from functools import reduce
    
    from functools import reduce
    
    def map_reduce(x,init=None):
        if init:
            ret = init
        else:
            ret = x.pop(0)
        for i in x:
            ret = i + ret
        return ret
    li = [1,2,3,10]
    s = map_reduce(li)
    print(s)
    
    #reduce(function, sequence[, initial]) -> value 采用两参数累积到一序列的项的功能
    #将两个参数的函数累积到序列的项上,从左到右,以便将序列减少到单个值。例如,减少(lambda x,y:x + y,[1、2、3、4、5))计算((((1 + 2)+(3)+ 4)+ 5)。
    # 如果初始存在,则将其放置在计算序列的项之前,当序列为空时作为默认值。
    print(reduce(lambda x,y:x+y,li))     #处理流程是把列表中的1赋值给x,把列表中的2赋值给y,第一的结果是 x = 1 + y=2,第二次计算x = 3 + y=3 依次类推
    print(reduce(lambda x,y:x+y,li,10))  #处理流程是把初始值10赋值给x,把列表中的1赋值给y,第一的结果是 x = 11 + y=2,第二次计算x = 13 + y=3 依次类推

    总结:

        #map遍历序列中的每个元素,得到的结果是一个""列表"",列表的个数以及位置与原来的一样.

        #filter遍历序列中的每个元素,判断每个元素得到的布尔值,如果是Trun就保留,不然就丢弃.

      #reduce处理一个序列,然后把序列进行合并操作

  • 相关阅读:
    Java学习——字符串
    Java学习——字符串
    【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies
    【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies
    Java学习——Eclipse下载,java配置,新建,输入输出
    Java学习——Eclipse下载,java配置,新建,输入输出
    python使用scikit-learn计算TF-IDF
    scanf,printf函数细节
    UVA 4855 Hyper Box
    poj 2001 Shortest Prefixes(字典树)
  • 原文地址:https://www.cnblogs.com/ajaxa/p/8966878.html
Copyright © 2011-2022 走看看