高阶函数 - reduce()

reduce(func,*iterable)
功能:
    每一次从 iterable 拿出两个元素,放入到 func 函数中进行处理,得出一个计算结果
    然后把这个计算结果和iterable中的第三个元素,放入到func函数中继续运算
    得出结果和之后的第四个元素,加入到func函数中进行处理,以此类推,直到最后的元素都参与了运算
参数:
    func: 内置函数或自定义函数
    iterable:  可迭代的数据
返回值:最终的运算处理结果
注意: 使用reduce前先导入   from functoole import reduce
案例1 [5,2,1,1] ==> 5211
# 普通方法
varlist = [5,2,1,1]
res = ''
for i in varlist:
    res += str(i)
res = int(res)
print(res)

# 使用reduce函数
varlist = [5,2,1,1]
def myfunc(x,y):
    return x*10+y
res = reduce(myfunc,varlist)
print(res,type(res))
流程
5  2  1  1
5 * 10 + 2 == 52
52 * 10 + 1 == 521
521 * 10 + 1 == 5211
# 优化版
varlist = [5,2,1,1]
res = reduce(lambda x,y:x*10+y,varlist)
print(res,type(res))
案例2 '456' ==> 456
要求不能使用int方法进行类型的转换时,如何解决上面的问题
def myfunc(s):
    vardict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
    return vardict[s]
iter1 = map(myfunc,'456')
# print(list(iter1),type(iter1))
res = reduce(lambda x,y:x*10+y,iter1)
print(res)

你可能感兴趣的:(python)