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 分钟前
从预测到决策:人工智能与机器学习的系统方法、工程闭环与现实边界
大数据·人工智能·windows·python·机器学习·密码学
MgArcher35 分钟前
抖音a_bogus参数逆向实战:JSVMP环境模拟与Hook技术(2025最新)
javascript·爬虫·python
circuitsosk1 小时前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
要努力点1 小时前
Python入门第六课
开发语言·python
CTA终结者1 小时前
先用小策略练清条件和动作
人工智能·python
Bruce_Liuxiaowei2 小时前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体
ValhallaCoder2 小时前
Leetcode-hot100(2026.08.17)
python·算法·leetcode
W_326002 小时前
Python-OpenCV图像像素与通道:通道拆分合并、深浅拷贝
图像处理·人工智能·python·opencv·机器学习
让你三行代码QAQ2 小时前
AI大模型开发核心名词速览
python
2401_868534782 小时前
农商行分布式网络建设
python·pygame