map()主要是映射,进行并行运算,而reduce()如其名,减少,归纳,
map()函数有两个参数(类型),第一个参数是函数,第二个参数是一个序列(从第二个起,可以有多个参数,根据第一个参数函数接受的参数来定)
reduc()e函数有两个参数,但是区别在于reduce()第一个参数的函数必须接受两个参数
话不多说,直接摆例子
map():
l = [1, 2, 3, 4]
def func(x, y):
print("%s,%s"%(x,y))
x = x+2
print(x)
return x
res = map(func,l,l)
print(list(res))
输出:
1,1
3
2,2
4
3,3
5
4,4
6
[3, 4, 5, 6]
reduce():
l = [1, 2, 3, 4]
def func(x, y):
print("%s,%s"%(x,y))
x = x+2
print(x)
return x
res = reduce(func, l)
print(res)
输出:
1,2
3
3,3
5
5,4
7
7
从这里可以看出reduce()是先取序列第一个值与第二个值进行运算,然后将return值(注意这里是return值)作为参数函数的第一个值x,然后再取序列第三个值为y,再运算,最后返回总和
l = [1, 2, 3, 4]
def func(x, y):
print("%s,%s"%(x,y))
x = x+2
print(x)
return 3
res = reduce(func, l)
print(res)
输出:
1,2
3
3,3
5
3,4
5
3