• Python之filter、map、reduce函数


    简介三函数:

    高阶函数:一个函数可以接收另一个函数作为参数,这种函数称之为高阶函数。

    filter、map、reduce三个函数都是高阶函数,且语法都一致:filter/map/reduce(func,seq),第一个参数为函数,第二个参数为可迭代对象。

    下面分别介绍三个函数的功能

    •filter
    filter(func,seq)为过滤函数,此函数的执行原理为将func作用于seq中的每一个元素,返回符合func筛选条件的元素的集合。

    所以filter函数常常用于序列的过滤,并未对元素进行运算亦或是改变,只起到筛选的功效。并且返回一个迭代器。

    1 list1=range(1,31)
    2 list(filter(lambda x:x%3==0 and x%4==0,list1))#因为filter返回iteror,用list显示结果
    [12, 24, 36, 48, 60, 72, 84, 96]
    由上代码,用filter筛选出list1中能同时被3和4整除的序列,第一个参数为lambda匿名参数,第二个参数为可迭代对象。



    •map
    map(func,seq)函数和filter函数很相似,同样是将func作用于seq中的每一个元素,但map并不是过滤,而是通过func对seq做映射。可以简单的理解为对seq中的每一个元素做加减乘除等某种运算,并返回每个运算的结果,即seq的元素数量是不变的。
    1 list2=range(1,11)#1到10的序列
    2 list(filter(lambda x:x%2==0,list2))
    [2, 4, 6, 8, 10]
    1 list(map(lambda x:x%2==0,list2))
    [False, True, False, True, False, True, False, True, False, True]

    由上可知,filter返回是list2中能被2整除的元素(即过滤),而map返回的是list2中每个元素能否被2整除的结果,只是把运算作用于每个元素并返回结果。
    1 list(map(lambda x:x*2,list2))#每个元素乘2
    
    
    [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]


    •reduce
    reduce(func,seq)函数和filter、map函数很相似,同样是将func作用于seq中的元素,但是reduce是先对集合中的第 1、2 个元素进行func操作,得到的结果再与第三个数据用 func 函数运算,直到最后得到一个结果。所以reduce是对序列中元素进行累积。
    1 from functools import reduce#需要从functools中导入
    2 list2=range(1,11)
    3 reduce(lambda a,b:a+b,list2)#对序列list2中的元素做累加运算

    55

    总结:

    相同点:1、filter、map、reduce三个函数都是将func作用于seq中的元素。

                2、filter和map都是func作用每个元素,返回的是iteror。

    不同点:1、filter是func作用每个元素并且筛选结果为true的元素,map是将每一个被func作用的结果都输出。

                2、reduce则是先对集合中的第 1、2 个元素进行func操作,得到的结果再与第三个数据用 func 函数运算,直到最后得到一个结果。

    
    
    
  • 相关阅读:
    JS——几种数组遍历方式总结
    JS——获取浏览器地址栏中的参数
    JQuery——JQuery CSS 选择器
    Maven 配置 本地骨架创建工程
    在SpringBoot中的SpringSecurity的配置类中,http.permitAll()与web.ignoring()的区别
    spring-task定时任务动态配置修改执行时间
    常用加密工具类
    thinkphp3.2 验证码的生成和校验,以及遇到的一些问题
    js 倒计时Demo
    PHP递归函数详解
  • 原文地址:https://www.cnblogs.com/ye20190812/p/13371970.html
Copyright © 2020-2023  润新知