【Python入门教程】第39篇 reduce()函数

本篇我们将会介绍 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

在上面的示例中,我们将整个列表累加成一个值,也就是列表中所有元素的和值。

reduce() 函数

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)

总结

  • Python reduce() 函数可以对列表进行累积运算并返回单个结果值。
上一篇:黄帝内经-第39篇-举痛论篇(1)


下一篇:1807512-39-5,m-PEG5-phosphonic acid,PEG链连接剂