python六十一课——高阶函数之reduce

Posted Hank

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)))

以上是关于python六十一课——高阶函数之reduce的主要内容,如果未能解决你的问题,请参考以下文章

python六十课——高阶函数之map

Python之高阶函数map/reduce

Python 学习笔记 -- 内嵌函数闭包匿名函数高阶函数map高阶函数filter高阶函数reduce

Python 高阶函数的使用

Python高阶函数_map/reduce/filter函数

python 高阶函数 map()和reduce()