# 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`循环更简洁,并且性能明显更好。
* * *
* * *
- 初级 Python
- python 入门
- 安装 Python3
- 运行 python 程序
- 数据类型和变量
- Python 数字
- Python 字符串
- Python 列表
- Python 字典
- Python 元组
- 数据类型转换
- Python 控制语句
- Python 函数
- Python 循环
- Python 数学函数
- Python 生成随机数
- Python 文件处理
- Python 对象和类
- Python 运算符重载
- Python 继承与多态
- Python 异常处理
- Python 模块
- 高级 Python
- Python *args和**kwargs
- Python 生成器
- Python 正则表达式
- 使用 PIP 在 python 中安装包
- Python virtualenv指南
- Python 递归函数
- __name__ == "__main__"是什么?
- Python Lambda 函数
- Python 字符串格式化
- Python 内置函数和方法
- Python abs()函数
- Python bin()函数
- Python id()函数
- Python map()函数
- Python zip()函数
- Python filter()函数
- Python reduce()函数
- Python sorted()函数
- Python enumerate()函数
- Python reversed()函数
- Python range()函数
- Python sum()函数
- Python max()函数
- Python min()函数
- Python eval()函数
- Python len()函数
- Python ord()函数
- Python chr()函数
- Python any()函数
- Python all()函数
- Python globals()函数
- Python locals()函数
- 数据库访问
- 安装 Python MySQLdb
- 连接到数据库
- MySQLdb 获取结果
- 插入行
- 处理错误
- 使用fetchone()和fetchmany()获取记录
- 常见做法
- Python:如何读取和写入文件
- Python:如何读取和写入 CSV 文件
- 用 Python 读写 JSON
- 用 Python 转储对象