AI智能
改变未来

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 + 2print(a(2))# 4

lambda函数的不同形式

lambda函数中可以不传参数,可以传递一个参数,二个参数,或者传递多个参数。

无参数的lambda函数

不管是有参数还是无参数,调用一定是变量名+括号,即这个括号不能省略,否则返回的是一个function函数对象。

In[1]:x1 = lambda: 88print(x1())# 88

单参数的lambda函数

单参数指的是匿名函数中只有一个参数,下面来看一个例子。

lambda x: x + 2print(b(8))# 10

多参数的lambda函数

多参数指的是匿名函数中有多个参数,下面来看一个例子。

c = lambda x, y: x * yprint(c(2, 5))# 10

带分支的lambda函数

有时候我们可以根据给定的参数,来判断接下来需要做什么,这就需要匿名函数结合分支表达式使用了。

d = lambda x: x - 1 if x > 5 else x + 1print(d(9))  # 8print(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)]

其它用法

ad8

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]

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » python基础(补充):lambda匿名函数,用了的,都说好!