python reduce使用

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
posted @ 2018-01-24 15:22  听书人  阅读(146)  评论(0)    收藏  举报