python函数式编程

函数式编程又叫做泛函编程,是一种“广播式”的编程。在python中,函数式编程主要有几个函数的使用构成:lambda()、map()、reduce()、filter()

一。map函数

  假设有列表a=[1,2,3],要接列表中的每一个元素都加上2得到一个新的列表,使用“列表解析”,我们可以写:

1 b = [x+2 for x in a]

  而利用map函数我们可以这样写:

1 b = map(lambda x:x+2,a)
2 b = list(b)

  在3.中需要使用list,而在2.中则不需要list这一步。原因是3.x中,map函数仅仅是创建一个待运行的命令,只有其他函数调用它才会返回结果.也就是说,我们首先定义一个函数,然后在使用map()函数将函数逐一应用到map列表中的每一个元素,最后返回一个数组。

  既然有了“列表解析”,为什么还要使用map呢,主要是“列表解析”的本质是for循环,速度很慢,而用map()函数,速度很快,它是c的底层来实现的。

二。reduce()函数

  reduce()函数和map()函数相似,map是逐一遍历,而reduce()是递归计算。如,计算n的阶乘:

reduce(lambda x,y:x*y ,range(1,n+1))

  上述命令在2.x中可以直接运行,但3.X中,需要导包(from fuctools import reduce),引入reduce.。计算过程是计算x*y的乘积,然后将乘积作为参数与第三个数字一起作为函数参数,最后返回计算结果

s = 1
for i in range(1,n+1):
    s = s*i

三。filter()函数

  顾名思义,它是一个过滤器,用来筛选列表中符合条件的元素

b = filter(lambda x: x>5 and x<8,range(10))
b = list(b)  ##map一样

  总结,以上的所有函数都是为了加快运算速度。

原文地址:https://www.cnblogs.com/wanghui1994/p/9902152.html