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函数的返回值。

  • 相关阅读:
    matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
    Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
    机器学习基石笔记1——在何时可以使用机器学习(1)
    Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记
    matlab安装过程的被要求的配置程序
    jdk环境变量配置
    Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记
    Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
    Coursera 机器学习 第7章 Support Vector Machines 学习笔记
    linux服务器---squid限制
  • 原文地址:https://www.cnblogs.com/51kata/p/5438195.html
Copyright © 2011-2022 走看看