• 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)))


    返回目录
  • 相关阅读:
    单层感知机实现或运算
    Ubuntu关于eclipse新插件不显示的解决方案
    台州学院maximum cow训练记录
    利用矩阵快速幂转换的题目
    A Few Laughing Men
    TOJ1196: RSA Signing
    HDU
    2018“百度之星”程序设计大赛
    2018 “百度之星”程序设计大赛
    2018 “百度之星”程序设计大赛
  • 原文地址:https://www.cnblogs.com/hankleo/p/10513955.html
Copyright © 2020-2023  润新知