函数基础
格式如下:
1
lambda argument1, argument2,... argumentN : expression
用法:
1
2
3
4square = lambda x: x**2
square(3)
9lambda是一个表达式(expression),并不是一个语句(statement)。
- lambda的主体是只有一行的简单表达式,并不能扩展成一个多行的代码块。
函数式编程
- 函数式编程,是指代码中每一块都是不可变的(immutable),都由纯函数(pure function)的形式组成。这里的纯函数,是指函数本身相互独立、互不影响,对于相同的输入,总会有相同的输出,没有任何副作用。
- Python 主要提供了这么几个函数:map()、filter())和reduce(),通常结合匿名函数lambda一起使用。
map(function,iterable)函数,前面的例子提到过,它表示,对iterable中的每个元素,都运用function这个函数,最后返回一个新的可遍历的集合。比如刚才列表的例子,要对列表中的每个元素乘以2,那么用map就可以表示为下面这样:
1
2l = [1, 2, 3, 4, 5]
new_list = map(lambda x: x * 2, l) # [2, 4, 6, 8, 10]filter(function,iterable)函数,和map函数类似,function同样表示一个函数对象。filter()函数表示对iterable中的每个元素,都使用function判断,并返回True或者False,最后将返回True的元素组成一个新的可遍历的集合。e.g.,比如我要返回一个列表中的所有偶数,可以写成下面这样:
1
2l = [1, 2, 3, 4, 5]
new_list = filter(lambda x: x % 2 == 0, l) # [2,4]reduce(function,iterable)函数,通常用来对一个集合做一些累积操作。function 同样是一个函数对象,规定它有两个参数,表示对iterable中的每个元素以及上一次调用后的结果,运用function 进行计算,所以最后返回的是一个单独的数值。e.g.,我想要计算某个列表元素的乘积,就可以用reduce()函数来表示:
1
2l = [1, 2, 3, 4, 5]
new_list = reduce(lambda x, y: x * y, l) # 1*2*3*4*5=120