zoukankan      html  css  js  c++  java
  • Python day11 filter函数筛选数据,reduce函数压缩数据的源码详解

    1.filter滤波器函数
    定义一个数组,需求:过滤出带ii的字符串
    arr=['dsdsdii','qqwe','pppdiimmm','sdsa','sshucsii','iisdsa']
    
    def filter_ii(n):
        return 'ii' in n
    
    def filter_test(func,array):
        ret=[]
        for i in array:
            if not func(i):#注意内置函数没有not
                ret.append(i)
        return ret
    
    print(list(filter_test(filter_ii,arr)))
    #则filter_test为万用滤波器
    #example
    print(list(filter(lambda n:not 'ii' in n,arr)))

    2.reduce函数(在python3中集成在functools中,必须导入)
    #example需求:列表中各数字相乘,可以有初始数字
    
    
    li=[]
    i=1
    while (i!=101):
        li.append(i)
        i=i+1
    #上面操作是建立一个数字1~100的数组
    #下面开始写reduce的代码
    def reduce_test(fun,arr,init=None):
        if (init==None):inintion= arr.pop()
        else: inintion=init
        for i in arr:
            inintion=fun(i,inintion)
        return inintion
    
    fun=lambda x,y:x*y
    print(reduce_test(fun,li,1))
    print(reduce_test(fun,[2,3],4))
    
    #内置reduce函数的用法
    from functools import reduce
    num_1=[1,2,3,100]
    print(reduce(lambda x,y:x+y,num_1,1))
    
    

    3.map filter reduce的区别(与big data中加工,压缩数据类似)
      1.map进去与出来的列表大小是一样的,加工数据
      2.filter是筛选列表,筛选数据
      3.reduce是将一个列表变成一个值,压缩数据

     
  • 相关阅读:
    最长严格上升子序列
    01背包
    八数码难题
    跳石头
    立体图
    质因数分解 2012年NOIP全国联赛普及组
    多项式输出 2009年NOIP全国联赛普及组
    绕钉子的长绳子
    数星星
    进制转换
  • 原文地址:https://www.cnblogs.com/littlepage/p/9384997.html
Copyright © 2011-2022 走看看