场景模拟:
序列元素在原有基础上加1 常规方法
简单但扩展性查
num1 = [1,2,3,4,5,6,7,8,9,100]
res = 0
for i in num1:
res += i
print(res)
函数方法
扩展性好,代码多
num1 = [1,2,3,4,5,6,7,8,9,100]
def reduce_test(array):
res = 0
for i in array:
res += i
return res
print(reduce_test(num1))
reduce 函数
场景模拟 :序列内的所有元素相乘
内部原理,参数两个,方法以及预处理参数
num1 = [1,2,3,4,5,6,7,8,9,100]
# def multi(x,y):
# return x*y
# lambda x,y:x*y
def reduce_test(func,array):
res = array.pop(0)
for i in array:
res = func(res,i)
return res
print(reduce_test(lambda x,y:x*y,num1))
reduce函数支持初始值
场景模拟 :序列内的所有元素相乘,并附加一个初始值一起相乘操作
代入初始值后的原理
num1 = [1,2,3,4,5,6,7,8,9,100]
# def multi(x,y): # 依旧是运算方法简单的话可以用匿名函数替换
# return x*y
# lambda x,y:x*y
def reduce_test(func,array,init=None): # 在参数中加入了初始值
if init is None:
res = array.pop(0)
else:
res=init
for i in array:
res = func(res,i)
return res
print(reduce_test(lambda x,y:x*y,num1,10000))
reduce 函数
在Python3中,reduce()函数已经被从全局名字空间里移除了,
放置在fucntools模块里,通过引入functools模块来调用
from functools import reduce
num1 = [1,2,3,4,5,6,7,8,9,100]
print(reduce(lambda x,y:x*y,num1,10))