一切都是函数,不保留中间状态。 从函数输入输出的角度看问题,很像之前的面向过程。 函数可以作为参数和返回值。 1)代码更简单了。 2)数据集,操作,返回值都放到了一起。 3)你在读代码的时候,没有了循环体,于是就可以少了些临时变量,以及变量倒来倒去逻辑。 4)你的代码变成了在描述你要干什么,而不是怎么去干。 map对一个数据做处理: name = map(lambda x: x + 1, [1,2,3])[2,3,4]
reduce每次对两个数据进行处理: name = reduce(lambda x, y: x + y, [1,2,3])6
reduce先计算1+2得到3,再计算3+3得到6。 filter过滤等于true的list item print filter(lambda x: x % 3 == 0, foo)[18, 9, 24, 12, 27]
计算平均值: number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8]sum = filter(lambda x: x>0, number)average = reduce(lambda x,y: x+y, sum)/len(sum)print average
|