本篇我们将会介绍 Python 中的 reduce() 函数,它可以用于处理列表。
有时候,我们想要对列表中的元素进行累积运算并返回单个值。例如,以下是一个数字列表:
scores = [75, 65, 80, 95, 50]
为了计算列表中元组的和值,我们可以使用以下 for 循环:
scores = [75, 65, 80, 95, 50] total = 0 for score in scores: total += score print(total)
输出结果如下:
365
在上面的示例中,我们将整个列表累加成一个值,也就是列表中所有元素的和值。
Python 提供了一个名为 reduce() 的函数,可以更加简洁地实现累积运算。reduce() 函数的语法如下:
reduce(fn,list)
reduce() 函数从左至右依次累计使用列表中的元素调用 fn 函数,从而将列表累积生成单个值。
与 map() 和 filter() 函数不同,reduce() 不是 Python 内置函数。实际上,reduce() 函数来自 functools 模块。如果想要使用 reduce() 函数,我们需要在代码开始时使用以下语句导入 functools 模块:
from functools import reduce
我们会在后续教程中介绍更多关于模块(module)的知识和使用方法。
以下示例使用 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() 函数将列表中的元素从左至右累积相加,最终返回了单个结果值。
如果想要进一步简化代码,可以使用T lambda 表达式替代 sum() 函数:
from functools import reduce scores = [75, 65, 80, 95, 50] total = reduce(lambda a, b: a + b, scores) print(total)