标签:导包 class 创建 span pre map 一个 参数 调用
函数式编程又叫做泛函编程,是一种“广播式”的编程。在python中,函数式编程主要有几个函数的使用构成:lambda()、map()、reduce()、filter()
假设有列表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()函数和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
顾名思义,它是一个过滤器,用来筛选列表中符合条件的元素
b = filter(lambda x: x>5 and x<8,range(10)) b = list(b) ##map一样
总结,以上的所有函数都是为了加快运算速度。
标签:导包 class 创建 span pre map 一个 参数 调用
原文地址:https://www.cnblogs.com/wanghui1994/p/9902152.html