zoukankan      html  css  js  c++  java
  • Python函数式编程:内置函数reduce 使用说明

    一、概述

    reduce操作是函数式编程中的重要技术之一,其作用是通过对一个集合的操作,可以从中生成一个值。比如最常见的求和,求最大值、最小值等都是reduce操作的典型例子。python通过内置reduce函数对reduce操作提供了很好的支持。

    函数语法:  reduce(function, iterable[,initializer])

    函数参数含义如下:

    1、function 需要带两个参数,1个是用于保存操作的结果,另一个是每次迭代的元素。

    2、iterable 待迭代处理的集合

    3、initializer 初始值,可以没有。

    reduce函数的运作过程是,当调用reduce方法时:

    1、如果存在initializer参数,会先从iterable中取出第一个元素值,然后initializer和元素值会传给function处理;

    接着再从iterable中取出第二个元素值,与function函数的返回值 再一起传给function处理,以此迭代处理完所有元素。最后一次处理的function返回值就是reduce函数的返回值。

    2、如果不存在initializer参数,会先从iterable中取出第一个元素值作为initializer值,然后以此从iterable取第二个元素及以后的元素进行处理。特殊情况下,如果集合只有一个元素,则无论function如何处理,reduce返回的都是第一个元素的值。

    下面我们通过具体的例子来说明。

    二、案例

    例1:求和

    reduce(lambda re,x:re+x,[2,4,6])

    结果是12。 这里我们用的是lambda表达式(匿名函数),带两个参数,re就是指的是每次操作后的返回值,这里没带initializer参数,参数x就是代表集合中的元素。

    第一轮操作时,re的初始值为第一个元素为2,x为第二个元素4, 运算后re的结果是6.

    第二轮操作时,re的值就是上次的结果6,x的值为6,这样结果为12.

    因为只有三个元素,又没有initializer参数,所以只会执行两轮。

     reduce(lambda re,x:re+x,[2,4,6],10)

    结果是22. 这个例子传入了初始化参数10 ,这样re的初始化值为10.

    有三个元素,需要操作三轮,结果就是22了。

    例2:计算阶乘

    reduce(lambda re,x:re*x,range(1,6))

    结果为120.  range(1,6)的结果是列表[1,2,3,4,5] , 上面的运算就是计算这些元素的乘积。

    三、小结

    reduce函数,本质上就是通过传入一个函数和初始值,不断的对集合中的每个元素进行迭代运算,每次运算的结果都作为第二次运算的参数。

    和最后一个元素的运算结果作为reduce函数的返回值。

  • 相关阅读:
    mysql,apache,php的关系
    简析 Tomcat 、Nginx 与 Apache 的区别
    Linux中涉及到环境变量的文件
    如何在Linux启动的时候执行一个命令
    sed的额外用法(网摘)
    shell脚本执行方式
    在rhel7上搭建centos7的yum源
    MYSQL三种安装方式--二进制包安装
    ssh连接不上排查方法总结
    MySQL启动很慢的原因
  • 原文地址:https://www.cnblogs.com/51kata/p/5438195.html
Copyright © 2011-2022 走看看