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


    返回目录
  • 相关阅读:
    姚明如何理财
    转:韩国“抢文化”与中国的“文化洁癖”
    转:关于IDL程序的发布
    GIS相关网站
    【转】:身为男人应做的十件事情
    转:关于稀少控制点下遥感影像纠正的主要研究成果
    转:E都市创业经历
    转载:OSSIM简介
    市场营销学课程
    C#中判断是否为数字&是否为整除(转)
  • 原文地址:https://www.cnblogs.com/hankleo/p/10513955.html
Copyright © 2011-2022 走看看