#reduce函数,在python2中可以直接使用,python3中需要导入包
#例子
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
def func(x,y):
return x*y
num = [1,2,3,100]
#指定基值
print(reduce_test(func,num,10))
print(reduce_test(lambda x,y:x*y,num))
使用reduce函数
from functools import reduce
num_l = [1,2,3,4,5,6]
print(reduce(lambda x,y:x+y,num_l))
print(reduce(lambda x,y:x+y,num_l,1000))
小结:
map():遍历序列,得到序列中的每个元素,将每个元素交给前边的函数逻辑处理,返回一个迭代对象,该迭代对象元素个数位置与原来保持一致
filter():过滤,遍历序列,得到序列中的每个元素,将每个元素交给前边的函数逻辑处理,得到布尔值,True则保留,最终结果返回一个迭代对象
reduce():合并,遍历序列,得到序列中的每个元素,将每个元素交给前边的函数逻辑处理,进行合并操作,最终结果返回一个值