Python入门教程第39篇 reduce()函数
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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() 函数可以对列表进行累积运算并返回单个结果值。
以上是关于Python入门教程第39篇 reduce()函数的主要内容,如果未能解决你的问题,请参考以下文章