MEMOO
MEMOO
Published on 2025-04-18 / 18 Visits
0
0

使用Reduce() 函数将列表归约(简化)为单个值

摘要:在本节中,您将学习如何使用 Python 的 reduce() 函数将列表归约(简化)为单个值。

列表归约简介

有时,您希望将 列表 归约(简化)为单个值。例如,假设您有一个 数字 列表:

scores = [75, 65, 80, 95, 50]

要计算 scores 列表中所有元素的总和,您可以使用以下 for 循环

scores = [75, 65, 80, 95, 50]

total = 0

for score in scores:

    total += score

print(total)

输出:

365

在这个示例中,我们将整个列表归约(简化)为了一个单一的值,即列表中所有元素的总和。

Reduce()函数简介

Python 提供了一个名为 reduce() 的函数,它允许您以更简洁的方式归约(简化)列表。

以下是 reduce() 函数的语法:

reduce(fn, list)

reduce() 函数将具有两个参数的 fn 函数累积地应用于列表中的项,从左到右,以将列表归约(简化)为单个值。

map()filter() 函数不同,reduce() 不是 Python 的内置函数。实际上reduce() 函数属于 functools 模块。

要使用 reduce() 函数,您需要使用文件顶部的以下语句从 functools 模块中导入它:

from functools import reduce

请注意,您将在后续教程中了解有关模块及其使用方法的更多信息。

以下示例演示了如何使用 reduce() 函数计算 scores 列表中元素的总和:

from functools import reduce

def sum(a, b):

    print(f"a={a}, b={b}, {a} + {b} ={a+b}")

    return a + b

scores = [75, 65, 80, 95, 50]

total = reduce(sum, scores)

print(total)

输出:

a=75, b=65, 75 + 65 = 140

a=140, b=80, 140 + 80 = 220

a=220, b=95, 220 + 95 = 315

a=315, b=50, 315 + 50 = 365

365

从输出中可以清楚地看到reduce() 函数从左到右累积地添加列表中的两个元素,并将整个列表归约(简化)为一个单一值。

为了使代码更简洁,您可以使用 lambda 表达式,而不是定义 sum() 函数:

from functools import reduce

scores = [75, 65, 80, 95, 50]

total = reduce(lambda a, b: a + b, scores)

print(total)

总结

  • 使用 Python 的 reduce() 函数将列表归约(简化)为单个值。


Comment