企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Python `reduce()`函数 > 原文: [https://thepythonguru.com/python-builtin-functions/reduce/](https://thepythonguru.com/python-builtin-functions/reduce/) * * * 于 2020 年 1 月 7 日更新 * * * `reduce()`函数接受一个函数和一个序列并返回如下计算的单个值: 1. 最初,使用序列中的前两项调用该函数,然后返回结果。 2. 然后使用在步骤 1 中获得的结果和序列中的下一个值再次调用该函数。 这个过程一直重复,直到序列中有项目为止。 `reduce()`函数的语法如下: **语法**:`reduce(function, sequence[, initial]) -> value` 提供`initial`值时,将使用`initial`值和序列中的第一项调用该函数。 在 Python 2 中,`reduce()`是一个内置函数。 但是,在 Python 3 中,它已移至`functools`模块。 因此,要使用它,必须先按以下步骤导入它: ```py from functools import reduce # only in Python 3 ``` 这是添加列表中所有项目的示例。 ```py >>> >>> from functools import reduce >>> >>> def do_sum(x1, x2): return x1 + x2 ... >>> >>> reduce(do_sum, [1, 2, 3, 4]) 10 >>> ``` 试试看: ```py from functools import reduce def do_sum(x1, x2): return x1 + x2 print(reduce(do_sum, [1, 2, 3, 4])) ``` 此`reduce()`调用执行以下操作: ```py (((1 + 2) + 3) + 4) => 10 ``` 前面的`reduce()`调用在功能上等同于以下内容: ```py >>> >>> def my_reduce(func, seq): ... first = seq[0] ... for i in seq[1:]: ... first = func(first, i) ... return first ... >>> >>> my_reduce(do_sum, [1, 2, 3, 4]) 10 >>> ``` 试一试: ```py def do_sum(x1, x2): return x1 + x2 def my_reduce(func, seq): first = seq[0] for i in seq[1:]: first = func(first, i) return first print(my_reduce(do_sum, [1, 2, 3, 4])) ``` 但是,`reduce()`调用比`for`循环更简洁,并且性能明显更好。 * * * * * *