API
reduce(function, sequence, starting_value)
顺序迭代。
可设置初始值。
python2 与 python3 中 reduce 的不同
python3 中,reduce()函数已经被从 全局名字空间 里移除了。
转而被放置到了 fucntools模块里 。
from functools import reduce
xs = reduce(lambda x, y : x + y, range(1, 5))
print(xs) # 10
Test (基于python2)
未设置 初始值
则 默认 以 sequence[0] 作为 初始值
list = [2, 3, 4]
f = lambda x, y : x * y
assert reduce(f, list) == 2*3*4
设置了 初始值
list = [2, 3, 4]
f = lambda x, y : x * y
assert reduce(f, list, 10) == 10*2*3*4
寻找最大值
list = [10, 100, 70, 20]
assert reduce(lambda a,b : a if a>b else b, list) == 100
也可以用python 自带的 max函数:
list = [10, 100, 70, 20]
assert reduce(max, list) == 100
等同于:
list = [10, 100, 70, 20]
assert max(list) == 100
求平方和
list = [2, 3, 4]
assert reduce(lambda x,y : x+y**2, list, 0) == 2**2 + 3**2 + 4**2