1 from functools import reduce 2 3 filtered = [('A', ('A', 3)), ('D', ('D', 1))] 4 5 reduced = reduce(lambda x, y : x + y[1][1], filtered, 0) 6 print reduced 7 print reduce(lambda x, y : x + y, [1, 2, 3, 4, 5]) 8 print reduce(lambda x, y : x[1][1] + y[1][1], filtered) #只适用于list中只用两个元素的情况
注意
1、lambda 匿名函数 至允许两个参数
2、reduce 计算时 list中前两个元素进行计算, 将结果当做下一次计算的x的值再次传入
所以, 当filtered = [('A', ('A', 3)), ('D', ('D', 1)),('D', ('D', 2))] 时, 只能使用
reduce(lambda x, y : x + y[1][1], filtered, 0) 这种方法计算, 0 为 x 的初始值
计算方法
reduce(lambda x, y : x + y, [1, 2, 3, 4, 5])
先取出 1, 2 计算 1 + 2 = 3
将 3 作为 x 的值 进行传参 计算 3 + 3 = 6
将 6 作为 x 的值 进行传参 计算 6 + 4 = 10
将 10 作为 x 的值 进行传参 计算 10 + 5 = 15