前言
reduce函数的作用是逐项将迭代器的前两项按照指定方式进行计算,例如我们有一个数字列表[1, 2, 3, 4]我们可以使用reduce函数求这四个数的和,首先计算1+2=3,然后计算3+3=6,最后计算6+4=10。reduce函数的书写方式为:reduce(function, iterable)
,第一个参数指定作用方式,第二个参数指定被作用对象,其执行方式相当于:
for i in range(len(iterable)):
if len(iterable) != 1:
result = function(iterable[0], iterable[1])
iterable.remove(iterable[0])
iterable.remove(iterable[0])
iterable.insert(0, result)
else:
break
实践
我们首先以字母拼接为字符串为例讲解reduce
函数的使用方式,首先创建一个全为字母的列表:
import functools
letters = ["H", "e", "l", "l", "o"]
然后我们通过匿名函数指定字母之间的拼接方式,并通过reduce函数对其进行逐项使用:
word = functools.reduce(lambda x, y: x + y, letters)
print(word)
>>> Hello
可见与下述代码运行结果相同:
for i in range(len(letters)):
if len(letters) != 1:
result = letters[0]+letters[1]
letters.remove(letters[0])
letters[0] = result
else:
break
print(letters)
>>> Hello
我们再给出一个数字两两相乘的例子:
digits = [1, 2, 3, 4, 5, 6]
result = functools.reduce(lambda x, y: x * y, digits)
print(result)
>>> 720
以上便是reduce函数的全部内容,感谢大家的收藏、点赞、评论。我们下一节将介绍递推式构造列表(List Comprehension),敬请期待~