摘要:在本节中,您将学习如何使用 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()
函数将列表归约(简化)为单个值。