python学习笔记-tip27(高阶函数-reduce函数)

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上
这个函数必须接收两个参数
参数1:函数
参数2:序列:list tuple dict set等
reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

  fun(x,y):这是一个作用在两个参数的函数,符合reduce用法
  reduce(fun,[a,b,c,d])
  =fun(fun(fun(a,b),c),d)

需要注意的是
先执行内部的fun,然后再依次展开,知道最后出现了两个参数~

但是细想一下,一般的操作还真用不到这个reduce

下面还是用廖雪峰老师的例子来说吧

  • 求一个整数list的 所有元素的和

  • 将一个整数list 变成顺序一样的一个整数

我们首先看看第一个列子

    #定义一个list
    nums=[1,2,3,4,5,6]
    #定义一个求和函数,这个函数必须是两个参数的
    def  getSum(x,y):
          return x+y
    #我们来尝试一下reduce函数
    result=reduce(getSum,nums)

接下来看看输出结果

    print(result)

执行过程分析

  reduce(getSum,[1,2,3,4,5,6])
                    ⬇️
  getSum(getSum(getSum(getSum(getSum(1,2),3),4),5),6)

答案很清晰

  #即为1到6的和,但是思路很重要
  21

我们来看一下实际的示例图

注意

在使用reduce时,必须导入依赖:from functools import reduce,而map则不需要

现在我们来看下第二个示例:

先理解题意:

我们现在要把[1,2,3,4,5]变成12345,即按照个十百千万的方式完成证书的拼装

首先定义list

    nums=[1,2,3,4,5]

然后定义方法,注意参数必须是两位的

     def  fun(x,y):
        return x*10+y

然后调用即可

    print(reduce(fun,nums))

那么处理逻辑:

  reduce(fun,[1,2,3,4,5])
            ⬇️
 fun(fun(fun(fun(1,2),3),4),5)

即: 先拼接1,2
然后得到的结果 再和3 进行拼接
再得到的结果和4拼接
然后和5拼接

对,reduce思路即为此

看下实际演示:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 3,940评论 0 27
  • (σ՞ਊ՞)σ在车上码的字,算是完成学校的一项任务… 日渐发现随笔触发这种东西越写越上瘾,我可能真的中了文字的毒哈...
    仙贝baby阅读 250评论 0 0
  • 一、为什么要发行寻街币? 寻街币,是由寻街APP发行的代币。 发行寻街币的目的,是为了记录每个用户对于寻街APP所...
    Fly_3925阅读 800评论 0 0
  • 尤慕北国瑞雪飞, 何时鲁地银装披? 贪恋他乡亦无用, 鸿雁传书玉帝悲。
    墨趣356阅读 247评论 4 3
  • 20171111 【幸福三朵玫瑰】 昨日 3朵玫瑰 1.早起✅ 2.阅读✅ 3.购物✅ 今日3朵玫瑰 1.早起 2...
    叶青丁当妈阅读 217评论 0 1

友情链接更多精彩内容