博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python函数式编程:内置函数reduce 使用说明
阅读量:7125 次
发布时间:2019-06-28

本文共 1165 字,大约阅读时间需要 3 分钟。

一、概述

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

 

转载地址:http://nceel.baihongyu.com/

你可能感兴趣的文章
[转]制作Chrome扩展
查看>>
Tcpdump抓包
查看>>
正则表达式抓取网页中的邮箱地址
查看>>
关于在主进程返回;线程陷入死循环
查看>>
Java必须了解的“递归”与“IO流”!!!
查看>>
Http协议状态码
查看>>
css3单冒号和双冒号的区别
查看>>
小X与缩写
查看>>
第一次团队会议
查看>>
018-请你说一下设计测试用例的方法
查看>>
android 链接mysql数据库
查看>>
CAKeyframeAnimation 旋转动画
查看>>
学习python的第二天
查看>>
深入详解SQL中的Null
查看>>
c#国际化
查看>>
java代码Calendar类
查看>>
java多线程实现礼花绽放的效果,
查看>>
算法提高 道路和航路 SPFA 算法
查看>>
POJ2449 第K短路
查看>>
【最小割】【网络流24题】【P2762】 太空飞行计划问题
查看>>