lambda匿名函数超详细总结

Crossin的编程教室

共 2743字,需浏览 6分钟

 ·

2021-04-29 06:10



大家好,欢迎来到 Crossin的编程教室 !

这几天,有同学在答疑群里问,能不能讲解一下lambda函数的使用?
今天我们就来分享一篇文章,给大家总结下lambda函数的相关知识点。
lambda函数又叫做“匿名函数”。当你需要完成一件小工作时,直接使用该函数可以让你的工作得心应手。下面我们将通过一些例子具体说明。

1. lambda函数介绍

在Python中,定义函数使用的是def关键字,并要提供一个函数名称。但是通过lambda关键字来定义的函数不需要提供名称,因此称之为“匿名函数”。
函数的语法如下:
  • lambda 参数: 表达式
函数用法如下:
  • ①先写lambda关键字,②然后依次写匿名函数的参数,多个参数之间用逗号连接,③接着是一个冒号,④冒号后面写的是返回的表达式。
需要注意以下几点:
  • lambda函数能接收任意多个参数,但只能返回一个表达式的值;
  • lambda函数是一个函数对象,如果直接赋值给一个变量,这个变量就成了一个函数对象;
当待处理的业务符合匿名函数的特点:多个参数和一个返回值,并且该函数只在一个地方使用,不在其他地方复用,建议使用lambda函数。

2. lambda函数的简单使用

下面我们写个例子:带有一个参数的匿名函数。
In[1]:lambda x: x + 2
Out[1]:<function __main__.<lambda>(x)>
接着,使用type()函数打印该函数的类型,得到的是一个function函数对象。
In[1]:type(lambda x: x + 2)
Out[1]:function
我们可以使用第一种方式:直接调用匿名函数,但是显得有点别扭。
注意:通过这种方式调用匿名函数,匿名函数和实参都需要用括号括起来。
In[1]:(lambda x: x + 2 )(2)
Out[1]:4
当然我们也可以使用第二种方式(强烈建议),将匿名函数传递给一个参数,调用匿名函数。
注意:通过这种方式调用匿名函数,变量名+括号。
In[1]:a = lambda x: x + 2
      a(2)
Out[1]:4

3. lambda函数的不同形式

lambda函数中可以不传参数,可以传递一个参数,二个参数,或者传递多个参数。
3.1 无参数的lambda函数
不管是有参数还是无参数,调用一定是变量名+括号,即这个括号不能省略,否则返回的是一个function函数对象。
In[1]:x1 = lambda88
print(x1())
结果如下:
3.2 单参数的lambda函数
单参数指的是匿名函数中只有一个参数,下面来看一个例子。
In[1]:b = lambda x: x + 2
print(b(8))
结果如下:
3.3 多参数的lambda函数
多参数指的是匿名函数中有多个参数,下面来看一个例子。
In[1]:c = lambda x,y: x*y
print(c(2,5))
结果如下:
3.4 带分支的lambda函数
有时候我们可以根据给定的参数,来判断接下来需要做什么,这就需要匿名函数结合分支表达式使用了。
In[1]:d = lambda x: x-1 if x > 5 else x+1
print(d(9))
print(d(3))
结果如下:

4. lambda函数与Python内置函数配合使用

其实lambda函数更多的时候是与sorted函数,map函数和filter函数等联合使用。这里以sorted函数为例进行举例说明。
4.1 对列表里的字典排序
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)
结果如下:
4.2 对字典进行key排序
m = {'a':25'c':27'b':20'd':22}
m_s = sorted(m.items(), key=lambda x: x[0])
print(m_s)
结果如下:
4.3 对字典进行values排序
n = {'a':25'c':27'b':20'd':22}
n_s = sorted(n.items(), key=lambda x: x[1])
print(n_s)
结果如下:
4.4 其它用法
list(map(lambda x: x*x, range(111)))
list(filter(lambda x: x % 2 == 0, range(111)))
结果如下:

以上便是 lambda 匿名函数的相关知识点和常见用法。大家可以自己尝试写一写,熟悉lambda的用法。用好它,会让你的代码看起来更加简洁,更加pythonic。
如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:黄伟呢

来源:数据分析与统计学之美


_往期文章推荐_

【Python 第70课】lambda表达式




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 98
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报