因为这两函数只能对可迭代数组进行操作,所以传入的参数需要做判断,依赖这个库:
from collections.abc import Iterable
它们的共同点: 从 可迭代数组 中输出需要给 操作函数 的参数
map:只需要从数组中获取单个值
reduce:需要获取两个:
1、第一个初始化为数组首个值,以及 更新为操作后的结果 2、第二个从数组索引 1 开始到索引结束
map:
def myMap(func, array):
if isinstance(array, Iterable):
return [func(i) for i in array]
else:
raise TypeError("错了错了")
reduce:
def myReduce(func, array):
if isinstance(array, Iterable):
initNum = array[0]
for i in range(len(array) - 1):
initNum = func(initNum, array[i + 1])
return initNum
else:
raise TypeError("错了错了")