Python提供了不同的有用函数来帮助开发人员。 reduce()
函数是其中之一,它用于使用提供的函数评估给定的列表项。
reduce()函数语法
reduce()函数使用以下语法。
reduce(FUNCTION, SEQUENCE, INITIAL)
- `reduce`是reduce函数的名称
- `FUNCTION`是我们要用于计算序列项的函数名。
- `SEQUENCE`是包含由函数处理或计算的多个项的列表。
- `INITIAL`可以设置为函数的第一个参数,但INITIAL是可选的,通常不使用。
导入工具模块/库
为了使用reduce()函数,我们需要提供提供它的模块。 functools
模块提供了reduce()函数,因此我们将像下面这样导入functools。
import functools
reduce()函数示例
我们将使用以下示例来解释reduce()函数。我们首先从functools模块导入reduce()函数。然后创建一个名称为 numbers
包含数字。然后我们将创建一个函数,该函数将在reduce()中使用,名称为 my_sum()
. 然后我们将通过提供函数名myu sum()和名为numbers的列表来调用reduce()函数。
from functools import reducenumbers = [ 1 , 2 , 3 , 4 , 5 ]def my_sum(a,b): return a+bresult = reduce(my_sum,numbers)print(result)

- 第一次,数字列表的第一个和第二个元素将被提供给mysum()函数。
- 当my_sum()函数对给定的参数(1和3)求和时,函数将返回3。
- 现在,3和下一个在列表3中的第三个将被提供给my_sum()函数,该函数将对它们求和并返回6
- 现在我们有了6,数字列表的第四个元素4将提供给my_sum()函数。
- …这将继续到列表中的每一项都使用给定函数求值,最后一个值将设置为’result’变量。
相关文章: 什么是Lambda?
带有初始值的reduce()示例
reduce()函数通常不使用初始值,语法部分对此进行了描述。但在某些情况下,使用初始值可能是有用的,甚至是必要的。 通过使用初始值,第一个元素将是初始值,提供的列表第一个元素将是第二个参数。
from functools import reducenumbers = [ 1 , 2 , 3 , 4 , 5 ]def my_sum(a,b): return a+bresult = reduce(my_sum,numbers,7)print(result)

- 提供7作为初始值,1是数字列表的第一个元素。7和1将作为参数提供给函数my_sum(),结果为8。
- 在第二次迭代中,8是函数myu sum()的第一个参数,2是第二个参数。
- …事情会像正常的函数一样继续。
带运算符函数的reduce()函数
Python提供了运算符函数,它只是4个基本的计算,比如加法、乘法等。我们可以将这些运算符函数与reduce()函数一起使用,这样可以提高代码的可读性。在本例中,我们将使用add()运算符函数。为了使用操作符函数,我们应该导入操作符模块。
from functools import reducefrom operator import addnumbers = [ 1 , 2 , 3 , 4 , 5 ]result = reduce(add,numbers)print(result)

我们可以看到我们刚刚提供了 add()
功能。
带Lambda函数的reduce()
Lambda函数用于创建匿名函数和内联函数,而无需显式定义它们。我们可以同时使用reduce()和lambda函数,这比显式函数定义更具可读性。在本例中,我们将创建一个lambda函数,该函数将对给定的列表项求和。
from functools import reducenumbers = [ 1 , 2 , 3 , 4 , 5 ]result = reduce(lambda x,y: x+y ,numbers)print(result)

使用reduce()将列表转换为字符串
reduce的另一个用例是提供一个字符串列表,并将所有项连接到一个字符串中,比如一个句子。在本例中,我们将提供名为 strlist
到reduce()函数。我们还将使用lambda操作,将给定的字符串元素连接在一起。
from functools import reducefrom operator import addstrlist=['I ', 'love ', 'poftut.com']result = reduce(lambda x,y: x+y ,strlist)print(result)
