python中的reduce内建函数使用方法指南

  • Post category:Python

Python中的reduce内建函数使用方法指南

介绍

reduce() 是 Python 中的一个内建函数。该函数将一个二元函数(具有两个参数的函数)作用在一个序列上,不断地将序列中相邻的两个元素组合起来,最终使得该序列缩减为一个单一的值。

例如,假设我们有一个包含数字的序列,使用 reduce() 函数可以获取这个序列中所有数字的和。

语法

reduce() 函数的语法如下:

reduce(function, iterable[, initializer])
  • function :二元函数,也称为累加器,接受两个参数,必须返回一个值。要缩减的序列中的挨个元素将传递给此函数。
  • iterable :缩减的序列。
  • initializer :可选的,用作计算的初始值。

在提供了初始值 initializer 的情况下,该函数将从序列的第一个元素开始执行,不提供初始值,则从序列的第二个元素开始执行。

示例

求和

考虑一个具有以下元素的数字列表: [1, 2, 3, 4, 5]。我们可以使用 reduce() 函数来找出该列表中所有数字的和。在这个例子中,我们没有使用初始值 0。以下是演示:

from functools import reduce

numbers = [1, 2, 3, 4, 5]

result = reduce(lambda x, y: x + y, numbers)

print(result)

输出结果为: 15

在上述示例中,lambda 表达式接受两个参数: xy。每个元素都按顺序传递给该函数。首先,xy 分别为 12。下一个迭代,x 变为 3y 变为 3。最后,x15y4,并且结果为 19

阶乘

接下来,让我们以计算阶乘的方式来使用 reduce() 函数。在下面的示例中,我们将使用 range() 函数创建一个数字列表来表示要求阶乘的数字。

from functools import reduce

number = 4

result = reduce(lambda x, y: x * y, range(1, number+1))

print(result)

输出结果为: 24

在上述示例中,我们从 14 使用 range() 函数创建了一个数字列表。累加器函数 lambda 将两个参数相互乘积。在第一次迭代中,x1y2。结果为 2x 现在将为 2,在相乘后等于 6。这个过程持续到到达最后的 4。现在,我们已经计算出阶乘为 4 的数字,结果为 24

结论

我们已经在上述示例中看到了 reduce() 函数的两个用途。期望这份指南对大家来说有所帮助!