Python 中的 reduce 函数:累积计算

reduce 是 Python 中一个用于累积计算的函数,它会把一个序列中的元素,通过指定的函数,逐步归纳成一个单一的结果。

它和 mapfilter 一样,是函数式编程的经典工具。

一、基本用法

reduce 函数的语法:

复制代码
from functools import reduce

reduce(function, iterable[, initializer])
  • function:接收两个参数的函数,用于累积计算

  • iterable:可迭代对象

  • initializer(可选):初始值

示例 1:计算总和

复制代码
from functools import reduce

numbers = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, numbers)
print(result)  # 15

# 执行过程:
# x=1, y=2 → 3
# x=3, y=3 → 6
# x=6, y=4 → 10
# x=10, y=5 → 15

示例 2:指定初始值

复制代码
from functools import reduce

numbers = [1, 2, 3]
result = reduce(lambda x, y: x + y, numbers, 10)
print(result)  # 16(10 + 1 + 2 + 3)

# 执行过程:
# x=10, y=1 → 11
# x=11, y=2 → 13
# x=13, y=3 → 16

二、reduce vs 其他方式

1. reduce vs 循环

复制代码
# 用循环计算乘积
numbers = [1, 2, 3, 4, 5]
product = 1
for n in numbers:
    product *= n

# 用 reduce
from functools import reduce
product = reduce(lambda x, y: x * y, numbers)

2. reduce vs sum()

对于求和,sum() 是更好的选择:

复制代码
# 不推荐:sum 已经内置了
reduce(lambda x, y: x + y, numbers)

# 推荐
sum(numbers)

3. reduce vs functools.accumulate

accumulate 返回中间结果reduce 只返回最终结果

复制代码
from itertools import accumulate

# accumulate 返回每一步的累积结果
print(list(accumulate([1, 2, 3, 4])))  # [1, 3, 6, 10]

# reduce 只返回最终结果
print(reduce(lambda x, y: x + y, [1, 2, 3, 4]))  # 10

reduce 就是把一个序列累积成一个值的工具,建议在 summaxmin 等内置函数不适用时再考虑它,日常开发更多用 for 循环来保持代码清晰。

相关推荐
唐山泽际科技1 小时前
2026年本地生活服务(如餐饮、美业)怎样借助LBS(地理位置)精准获客?
python·智能手机·生活
金銀銅鐵1 小时前
[Python] 用 Pillow 来绘制北欧五国的国旗
python
paeamecium3 小时前
【PAT甲级真题】- Rational Sum (20)
数据结构·c++·python·算法·pat考试·pat
爱昏羔10 小时前
下篇:从检索到交互 — 物流RAG问答系统与WebUI全实现
python·langchain·agent
_Jimmy_10 小时前
Agent引用数据库知识过时的增量同步方案
人工智能·python·langchain
min(a,b)11 小时前
学习第 4 天:面向对象与异常处理
python·学习·学习方法
yangshicong13 小时前
第19章:AI安全防护与AI安全
人工智能·python·安全·prompt·ai编程
果汁华13 小时前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
c_lb728813 小时前
2026年不同基础做量化,先找AI能参与的位置
人工智能·python