zoukankan      html  css  js  c++  java
  • python六十一课——高阶函数之reduce

    2).reduce(fn,lsd):

    参数一:fn --> 函数对象

    参数二:lsd --> 序列对象

    功能:

    先将lsd中的第一和第二个元素去除传入到fn中参与运算,

    运算后得到结果,再和第三个元素传入到fn中参与运算,

    以此类推...

    【注意】:

    reduce函数属于functools模块中的函数,所以需要显示的先导入functools模块再使用 `from functools import reduce`
    from functools import reduce
    lt=[1,2,3,4]
    '''
    lt = [1,2,3,4]
    自定义封装函数 --> add 作用:对列表中的元素求和 def add(x,y)
    使用reduce函数执行效果如下:
    第一次:add(1,2)
    第二次:add(add(1,2),3)
    第三次:add(add(add(1,2),3),4)
    '''
    #需求:计算列表中元素的和值
    lt=[1,2,3,4]
    #代码实现一:;递归解决求和的问题(简单递归)
    def mySum(num):
        if num==1:
            return 1
        return num+mySum(num-1)
    print(mySum(4))
    
    #代码实现二:新技术(reduce)
    def add(x,y):
        return x+y
    res=reduce(add,lt)
    print(res,type(res))
    print(reduce(lambda x,y:x+y,lt))
    print(sum(lt))
    
    #需求:lt=[1,2,3,4]得到其中元素的乘积
    print(reduce(lambda x,y:x*y,lt))
    
    
    '''
    需求:
    从键盘读入一个整数字符串,例如:'12345'
    需要将其转换为12345,注意:不能直接使用int()来实现
    思路:使用map和reduce配合来实现
    步骤一:'12345' --> 拆分为散装数据:1 2 3 4 5 可以用map来实现
    步骤二:将map对象中的数据1 2 3 4 5组合成为 --> 12345 可以用reduce来实现
    '''
    str1='12345'
    def chr2Int(str):
        return int(str)
    
    def func(x,y):
        return x*10+y
    mo=map(chr2Int,str1)
    num=reduce(func,mo)
    print(num,type(num))
    
    #终极版
    print(reduce(lambda x,y:x*10 + y,map(int,str1)))


    返回目录
  • 相关阅读:
    二、编写输出“Hello World”
    实验一:JDK下载与安装、Eclipse下载与使用总结心得
    C++引用
    数组类型与sizeof与指针的引用
    电源已接通,未充电
    改变Web Browser控件IE版本
    “stdafx.h”: No such file or directory
    word2013 blog test
    Editplus配置VC++(1) 及相关注意事项
    VC++6.0在Win7以上系统上Open或Add to Project files崩溃问题 解决新办法
  • 原文地址:https://www.cnblogs.com/hankleo/p/10513955.html
Copyright © 2011-2022 走看看