D16-10 reduce函数

计算数组中的和

最简单的方法用for循环

num_l = [1,2,3,100]
res = 0
for num in num_l:
    res+=num
print(res)
输出结果
106

 

  另一种方法

num_l = [1,2,3,100]
def reduce_test(array):
    res=0
    for num in array:
            res+=num
    return res
print(reduce_test(num_l))
结果为106

 相乘如下:

def reduce_test(func,array):
    res=1
    for num in array:
            res=func(res,num)
    return res
print(reduce_test(lambda x,y:x*y,num_l))  #给reduce_test传参数,func对应的是计算方法,
array对应的则是要计算的数组。 输出结果600

  判断用户是否设置了初始值

num_l = [1,2,3,100]

def reduce_test(func,array,init=None): #init初始值默认为None
    if init is None:
        res=array.pop(0)
    else:
        res = init
    for num in array:
            res=func(res,num)
    return res
print(reduce_test(lambda x,y:x*y,num_l,100))
结果 60000

  

reduce函数   #reduce函数的功能 合并一个序列 得到最终结果 reduce(lambda x,y:x+y,num_l,1) 中的1是将初始值设置为1

from functools import reduce
num_l = [1,2,3,100]
reduce(lambda x,y:x+y,num_l,1)
print(reduce(lambda x,y:x+y,num_l,1))
输出结果107

  

 

posted @ 2018-08-09 14:57  犀利的攻城狮  阅读(149)  评论(0)    收藏  举报