lambda&map&filter&reduce

lambda

f=lambda x: x*x
#求阶乘
reduce(lambda: x,y,range(1,5))

map


map()接收两个参数,一个是函数,一个序列;结果作为新的list返回

array=[1, 2, 3, 4, 5, 6, 7, 8, 9]
f=lambda x: x*x
ret=map(f, array)
print (list(ret))

处理多个参数

l1 = [1, 2, 3]
l2 = [4, 5, 6]
ret = map(lambda a, b: a + b, l1, l2)
print(list(ret))

filter


对元素筛选,符合的输出

li = [11, 22, 33]
ret = filter(lambda arg: arg > 22, li)
print(list(ret))

reduce

from functools import reduce
l1 = [11, 22, 33]
ret = reduce(lambda arg1, arg2: arg1 + arg2, l1)
print(ret)

reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

先计算头两个元素:f(1, 3),结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;
由于没有更多的元素了,计算结束,返回结果25。
posted @ 2017-04-17 12:08  zhangshihai1232  阅读(83)  评论(0)    收藏  举报