网易首页 > 网易号 > 正文 申请入驻

Python 内置函数:reduce()

0
分享至

在数据处理和函数式编程中,“归约”(reduce)是一种重要操作,主要用于将序列中的所有元素,按照某种逻辑逐步合并为一个最终值。

Python 提供的 reduce() 函数正是实现这一过程的工具。

需要注意的是,在 Python 3 中,reduce() 已被移到 模块中,因此使用时需要导入。

它依然是一个强大高效的函数,常用于累加、连乘、最大值、字符串拼接等场景。

一、函数语法

from functools import reduce

reduce(function, iterable, initializer=None)

参数:

function:一个二元函数(接收两个参数)。第一个参数是累计值(accumulator),第二个参数是当前元素,用于指定如何合并。

iterable:可迭代对象(如列表、元组、字符串等)。

initializer:可选,初始值。如果提供,则会作为第一个参数与序列的第一个元素进行运算。如果不提供,则序列的第一个元素会作为初始累计值。

返回值:

返回归约后的单一结果值。

二、基本用法举例

1、计算累加和

from functools import reduce

data = [1, 2, 3, 4]
result = reduce(lambda x, y: x + y, data)
print(result)  # 输出:10

过程解释:

(((1 + 2) + 3) + 4) = 10

2、连乘计算阶乘

from functools import reduce

result = reduce(lambda x, y: x * y, range(1, 6))  # 1*2*3*4*5
print(result)  # 输出:120

3、使用初始值

from functools import reduce

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

三、进阶技巧

1、拼接字符串

from functools import reduce

words = ['mediaTEA', 'is', 'fun']
sentence = reduce(lambda x, y: x + ' ' + y, words)
print(sentence)  # 输出:mediaTEA is fun

2、查找最大值

from functools import reduce

data = [8, 3, 15, 6]
maximum = reduce(lambda x, y: x if x > y else y, data)
print(maximum)  # 输出:15

3、自定义归约逻辑

例如:每个元素平方后求和

from functools import reduce

data = [1, 2, 3, 4]
result = reduce(lambda acc, x: acc + x**2, data, 0)
print(result)  # 输出:30(1²+2²+3²+4²)

四、reduce 的特性

1、逐步迭代合并

每次仅取累计值和下一个元素进行运算,最终得到单一结果。

2、完整执行,不可随意中断

不像 for 循环能用 break 提前退出,reduce() 会对序列执行到末尾(除非函数逻辑抛出异常)。

3、函数必须是二元的

function 必须接收两个参数:累计值与当前元素。

4、不保留中间值

reduce() 仅返回最终结果。如果需要保留每一步的中间值,应使用 itertools.accumulate()。

五、常见错误和注意事项

1、必须导入

from functools import reduce

否则会报 NameError。

2、空序列错误(没有初始值)

reduce(lambda x, y: x + y, [])  # TypeError

解决方法:提供初始值

reduce(lambda x, y: x + y, [], 0)  # 输出:0

3、函数必须接受两个参数

错误示例(只有一个参数):

# 错误:lambda 只有一个参数
reduce(lambda x: x * x, [1, 2, 3])  
# TypeError: () takes 1 positional argument but 2 were given

六、补充说明

在很多场景下,用内置函数会更直观高效:

sum([1,2,3]) 代替 reduce(lambda x,y: x+y, [1,2,3])。

max(data)、min(data) 代替手写 reduce。

' '.join(words) 代替字符串拼接。

如果需要保留中间结果,推荐使用 itertools.accumulate() :

from itertools import accumulate

lst = list(accumulate([1, 2, 3, 4], lambda x, y: x + y))
print(lst)    # [1, 3, 6, 10]

小结

reduce() 是函数式编程中的重要工具,用于将序列逐步“归约”为单一结果。

常用于:累加或连乘等数学运算、最大值或最小值查找以及字符串拼接或自定义合并逻辑等。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
这才是铁哥们!欠中国81亿全还清,还赠百亿大礼,西方国家都眼红

这才是铁哥们!欠中国81亿全还清,还赠百亿大礼,西方国家都眼红

芭比衣橱
2025-09-18 10:26:37
同一天内!广东8名干部被查!

同一天内!广东8名干部被查!

知肇分子
2025-09-18 22:42:01
2.2亿遗产飞了!具俊晔拒赴S妈鸿门宴不装了,大S沦为“笑话”

2.2亿遗产飞了!具俊晔拒赴S妈鸿门宴不装了,大S沦为“笑话”

寻墨阁
2025-09-19 07:52:51
美国军火商洛马,最厉害在于,没有任何参照物,就能造出先进武器

美国军火商洛马,最厉害在于,没有任何参照物,就能造出先进武器

大道无形我有型
2025-09-17 21:52:06
对嚣张的以色列终于出手了

对嚣张的以色列终于出手了

书中自有颜如玉
2025-09-19 08:30:52
iOS 26“液态玻璃”设计翻车 被嘲图标太大 像老年机界面

iOS 26“液态玻璃”设计翻车 被嘲图标太大 像老年机界面

手机中国
2025-09-16 16:10:09
A股开盘:三大指数涨跌不一,高带宽内存、CPO、EDA等概念走强,同步磁阻电机等概念走弱。

A股开盘:三大指数涨跌不一,高带宽内存、CPO、EDA等概念走强,同步磁阻电机等概念走弱。

界面新闻
2025-09-19 09:28:47
美国再次独家否决安理会加沙决议

美国再次独家否决安理会加沙决议

澎湃新闻
2025-09-19 03:52:17
不同于往日,国安vs河内公安的比赛工体看台显得格外空荡

不同于往日,国安vs河内公安的比赛工体看台显得格外空荡

懂球帝
2025-09-18 20:19:37
31岁车祸身亡的张雨生,你以为只是醉驾、飙车,其实并没那么简单

31岁车祸身亡的张雨生,你以为只是醉驾、飙车,其实并没那么简单

芳芳历史烩
2025-09-12 19:08:12
国安主场全武行,河内球员拖拽何宇鹏,引爆冲突,塞蒂恩意外受伤

国安主场全武行,河内球员拖拽何宇鹏,引爆冲突,塞蒂恩意外受伤

小金体坛大视野
2025-09-19 08:33:06
能活到85岁的老人,多数在50岁时,就已经不再做这些事了

能活到85岁的老人,多数在50岁时,就已经不再做这些事了

烙任情感
2025-09-18 07:04:36
首批 iPhone Air、iPhone 17 和 iPhone 17 Pro 订单现已送达客户

首批 iPhone Air、iPhone 17 和 iPhone 17 Pro 订单现已送达客户

cnBeta.COM
2025-09-19 06:16:07
欧美20多年来最大的局,被中国破了,这才是他们最恐慌的地方

欧美20多年来最大的局,被中国破了,这才是他们最恐慌的地方

南宫一二
2025-09-17 13:49:42
市中区教体局通报:育英中学一教师存在对学生体罚不当行为,被记过处分并调离工作岗位

市中区教体局通报:育英中学一教师存在对学生体罚不当行为,被记过处分并调离工作岗位

极目新闻
2025-09-18 21:00:33
因为贫穷你干过最卑微的事是什么?网友:太惨了,看得我泪流满面

因为贫穷你干过最卑微的事是什么?网友:太惨了,看得我泪流满面

解读热点事件
2025-09-15 00:05:07
窦骁被丈母娘做局欠下巨债的瓜

窦骁被丈母娘做局欠下巨债的瓜

热闹吃瓜大姐
2025-09-16 20:02:01
惊呆了!曾经被人忽略的小国塞尔维亚,这次彻底震惊了整个欧洲!

惊呆了!曾经被人忽略的小国塞尔维亚,这次彻底震惊了整个欧洲!

青青子衿
2025-09-17 23:46:42
詹姆斯谈热梗:我走过去最先想到的就是祝珍妮和琳达妇女节快乐

詹姆斯谈热梗:我走过去最先想到的就是祝珍妮和琳达妇女节快乐

直播吧
2025-09-19 08:49:02
青岛CBD13年伤疤!亚洲最大地下商业惨变巨坑!谁之过?

青岛CBD13年伤疤!亚洲最大地下商业惨变巨坑!谁之过?

锦晨房产咨询
2025-09-17 23:33:15
2025-09-19 09:47:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1525文章数 63关注度
往期回顾 全部

科技要闻

黄仁勋亲口确认:正评估英特尔代工

头条要闻

加沙停火草案被美国一票否决 中国大使发出"灵魂三问"

头条要闻

加沙停火草案被美国一票否决 中国大使发出"灵魂三问"

体育要闻

30队今夏花钱排名:雷霆超8亿 勇士零花费

娱乐要闻

最美央视才女,甩掉孙红雷嫁给张嘉益

财经要闻

青海一"矿霸"非法填埋万吨危废

汽车要闻

女神代言/新增配色/智能升级 26款腾势N9售38.98万起

态度原创

时尚
旅游
家居
手机
本地

秋冬穿对红黄橙,温暖又高级

旅游要闻

热闻|清明假期将至,热门目的地有哪些?

家居要闻

多维交集 简意雅情结合

手机要闻

苹果App Store欧洲新规能否过关?欧盟收集开发者反馈评估合规性

本地新闻

云游中国|谁懂!在天下第一关拍到史诗感大片

无障碍浏览 进入关怀版