lambda匿名函数
python中使用 lambda 关键字声明一个匿名函数,什么叫做匿名函数?匿名函数就是没有名字的函数
- lambda函数语法
lambda argument(s):expression
lambda函数可以接受任意数量的参数,但函数只能包含一个表达式。表达式是lambda函数执行的一段代码,它可以返回任何值,也可以不返回任何值。
- lambda函数返回值
注意返回值是一个函数对象
举个例子
下面的remainder是个标识符,你可以理解为一个变量,存了一个函数,通过lambda函数将一个函数对象赋值给这个标识符
remainder=lambda x:x%2
#调用这个函数
print(remainder(3))
很明显,若要使用这个匿名函数,这个表示符相当于一个函数名
lambda函数有啥用
1. 将函数作为参数传递给高阶函数,可以实现函数的复用
def testfunc(num):
return lambda x : x * num
result1 = testfunc(10)
result2 = testfunc(20)
print(result1(9))
pritn(result2(9))
2. 与python内置函数一起使用
1. filter()
filter函数filter(object,iterable)
接受两个参数,object:一个返回布尔值的函数,iterable:列表迭代器(只有一个)
迭代器中的每一个元素都会通过object这个函数进行判断,结果为True的元素会组成一个新列表作为filter函数的返回值
# filter函数与lambda函数使用
num_list=[2,6,8,10,11,1,4,13,7,12,0,3,21]
filtered_list=list(filter(lambda i:(i>7),num_list))
print(filtered_list)
输出结果:
[8, 10, 11, 13, 12, 21]
2. map()
map( )函数是另一个以一个函数对象和一个列表作为参数的内置函数。map函数的语法如下:map(object,iterable_1,iterable_2, ...)
其中,object是函数标识符,iterable的迭代器可以是字典、列表
map()函数主要是根据lambda函数定义的逻辑来将输入迭代器中的每一项映射到输出迭代器中的相关项
numbers_list =[2,6,8,10,11,4,12,7,13,17,0,3,21]
mapped_list = list(map(lambda num: num %2,numbers_list))
print(mapped_list)
输出结果:
[0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1]