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