python基础(补充):lambda匿名函数,用了的,都说好!

python基础(补充):lambda匿名函数,用了的,都说好!

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]

python基础(补充):lambda匿名函数,用了的,都说好!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyywdj.html