Python 中的 reduce 函数:累积计算

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

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

一、基本用法

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 就是把一个序列累积成一个值的工具,建议在 sum、max、min 等内置函数不适用时再考虑它,日常开发更多用 for 循环来保持代码清晰。

相关推荐
进击的明明6 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿7 小时前
Python实战第8期:函数
后端·python·编程语言
卷无止境9 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境11 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
滴啦嘟啦哒13 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生14 小时前
AI安全与红队测试
python·ai
费曼学习法14 小时前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿14 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者14 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
MasonYyp14 小时前
asyncio并发协程
python