lambda函数又叫做“匿名函数”。当你完成一件小工作时,直接使用该函数可以让你的工作得心应手。
lambda函数介绍在Python中,定义函数使用的是def关键字,但是通过lambda关键字来定义的函数,称之为“匿名函数”。
函数的语法如下:lambda 参数:表达式
函数用法如下:①先写lambda关键字,②然后依次写匿名函数的参数,多个参数之间用逗号连接,③接着是一个冒号,④冒号后面写的是返回的表达式。
需要注意以下几点:lambda函数能接收任意多个参数,但只能返回一个表达式的值;
lambda函数是一个函数对象,如果直接赋值给一个变量,这个变量就成了一个函数对象;
当待处理的业务符合匿名函数的特点:多个参数和一个返回值,并且该函数只在一个地方使用,不在其他地方复用,建议使用lambda函数。
lambda函数的简单使用下面我们写了带有一个参数的匿名函数。
print(lambda x: x + 2) # <function <lambda> at 0x000001CFE5851EA0>接着,使用type()函数打印该函数的类型,得到的是一个function函数对象。
print(type(lambda x: x + 2)) # <class 'function'>将匿名函数传递给一个参数,调用匿名函数。
注意:通过这种方式调用匿名函数,变量名+括号。
a = lambda x: x + 2 print(a(2)) # 4 lambda函数的不同形式lambda函数中可以不传参数,可以传递一个参数,二个参数,或者传递多个参数。
无参数的lambda函数不管是有参数还是无参数,调用一定是变量名+括号,即这个括号不能省略,否则返回的是一个function函数对象。
In[1]:x1 = lambda: 88 print(x1()) # 88 单参数的lambda函数单参数指的是匿名函数中只有一个参数,下面来看一个例子。
lambda x: x + 2 print(b(8)) # 10 多参数的lambda函数多参数指的是匿名函数中有多个参数,下面来看一个例子。
c = lambda x, y: x * y print(c(2, 5)) # 10 带分支的lambda函数有时候我们可以根据给定的参数,来判断接下来需要做什么,这就需要匿名函数结合分支表达式使用了。
d = lambda x: x - 1 if x > 5 else x + 1 print(d(9)) # 8 print(d(3)) # 4 lambda函数与Python内置函数配合使用其实lambda函数还可以与sorted函数,map函数和filter函数,联合使用。这里以sorted函数为例进行举例说明。
对列表里的字典排序 l = [{'a': 1, 'b': 41}, {'a': 1111, 'b': 24}, {'a': 1111, 'b': 32}] l_s = sorted(l, key=lambda x: x["b"], reverse=True) print(l_s) # [{'a': 1, 'b': 41}, {'a': 1111, 'b': 32}, {'a': 1111, 'b': 24}] 对字典进行key排序 m = {'a': 25, 'c': 27, 'b': 20, 'd': 22} m_s = sorted(m.items(), key=lambda x: x[0]) print(m_s) # [('a', 25), ('b', 20), ('c', 27), ('d', 22)] 对字典进行values排序 n = {'a': 25, 'c': 27, 'b': 20, 'd': 22} n_s = sorted(n.items(), key=lambda x: x[1]) print(n_s) # [('b', 20), ('d', 22), ('a', 25), ('c', 27)] 其它用法 print(list(map(lambda x: x * x, range(1, 11)))) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] print(list(filter(lambda x: x % 2 == 0, range(1, 11)))) # [2, 4, 6, 8, 10]