python--reduce()函数

reduce函数实现函数对象对参数运算之后输出结果的累积计算

函数导入:

1 from functools import reduce

函数调用:

1 def add(x, y):
2     return x+y
3 
4 print(reduce(add, [1,2,3,4,5]))
1 reduce(lambda x, y: x+y, [1,2,3,4,5])
2 Out[1]: 15

  上面两者等价

下面解释更复杂的使用情形:

1 def a(x, y):
2     return x + y
3 def b(x):
4     x /= 3
5     return x+0.2
6 def c(x):
7     x %= 2
8     return x

  调用函数:

1 reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b])(1,2)
2 Out[2]: 1.2

  这里依次传入了函数a,b,返回的是一个函数,所以后面加括号调用。

1 reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b])(1,8)
2 Out[3]: 3.2
3 reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b, c])(1,8)
4 Out[4]: 1.2000000000000002

  这里的reduce实现了a、b、c三个函数的连接---->c( b( a() ) ),而前面的我们计算了[1,2,3,4,5]的累积和,这里我们怎么计算呢?

1 d = reduce(lambda f, g: lambda *w, **kw: g(f(*w, **kw)), [a, b, c])
2 reduce(d, [1,8,10])
3 Out[5]: 1.9333333333333331

  上面的问题可以这样实现,还有没有其他方法直接实现呢?目前还没有发现直接在一个reduce里面累积函数和参数的方式,如果有也希望大家留言提醒!

 

 

 

 

 

posted @ 2019-11-29 17:06  巴蜀秀才  阅读(787)  评论(0编辑  收藏  举报