python中reduce函数用法_一文读懂reduce函数

  • Post author:
  • Post category:python


Python中的reduce函数是经常和map,filter一起被提到的函数,但是reduce的工作原理却不是那么直观,我们这里就来详细讲解一下这个函数。

首先先来看一下reduce函数的用法

import functools

functools.reduce(lambda x,y: x+y, [1, 2, 3, 4])

reduce接受的第一个参数是一个函数,第二个参数是一个列表。上面我们通过reduce函数来作了一个求和的运算,我们这里计算的是[1, 2, 3, 4]这个列表中所有元素的和。

需要注意的是,reduce的第一个参数是一个函数,这个函数接受两个参数,像上面的lambda函数有两个参数x和y,这两个参数分别代表什么意思呢?这也是很多人感到困惑的地方。这个得从reduce的工作原理说起。

reduce工作原理

对于我们上面的代码,reduce的工作原理是像下面这张图所示的

首先,reduce会计算列表中第一个和第二个元素的和,然后把这个结果和第三个元素相加,然后再把新的这个计算结果和第四个元素相加,每一次都是上一次计算的结果和下一个元素相加,所以这样就实现了求和运算。

每一次计算中,x和y分别被赋予了什么值,我们可以定义下面一个函数来看一下

def func(x, y):

print(x, y)

然后我们把这个函数传给reduce函数的第一个参数,像下面这样

functools.reduce(func, [1, 2, 3, 4])

执行上面的代码,会看到如下的输出



版权声明:本文为weixin_36014846原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。