Define: 匿名函数lambda函数:指一类无需定义标识符(函数名)的函数或子程序。所谓匿名函数,通俗地说就是没有名字的函数,lambda函数没有名字,是一种简单的、在同一行中定义函数的方法。

Feature

  • 功能简单:lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。

  • 参数不受限:lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。

  • 表达式唯一:lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的运算结果就是函数的返回值。


syntax:

lambda表达式的基本语法如下:

lambda arg1,[arg2,arg3]… :<表达式>

arg1/arg2/arg3为函数的参数(函数输入),表达式相当于函数体,运算结果是表达式的运算结果。

例如:

lambda x, y: xy;函数输入是x和y,输出是它们的积xy

lambda:None;函数没有输入参数,输出是None

lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)

lambda **kwargs: 1;输入是任意键值对参数,输出是1

# test lambda fuction
f = lambda a, b, c, d : a*b*c*d
# equal the follow function
def f(a,b,c,d):return a,b,c,d


单行:(lambda x: xxx)(10)=1000

Case:
由于lambda语法是固定的,其本质上只有一种用法,那就是定义一个lambda函数。用法扩展为以下几种:

  1. 将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
add=lambda x, y: x+y

例如,定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add便成为具有加法功能的函数。例如,执行add(1,2),输出为3。

  1. 将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
time.sleep=lambda x:None

例如,实现标准库time中的函数sleep的功能屏蔽(Mock)。执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。

  1. 将lambda函数作为参数传递给其他函数。
return lambda x, y: x+y

返回一个加法函数。这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础,在这里我们不展开。

部分Python内置函数接受函数作为参数,典型的此类内置函数有这些:

假设:

df=pd.DataFrame({'id':[1,2,3,4,5],'name':['Jeremy','Frank','Janet','Ryan','Mary'],'age':[20,25,15,10,30],'income':[4000,7000,200,0,10000]
})

  • apply函数 ,实现对pandas的数进行统一处理。
df['age']=df['age'].apply(lambda x: x+3)

  • filter函数 此时lambda函数用于指定过滤列表元素的条件。
list(filter(lambda x: x>18,df['age']))

  • sorted函数 此时lambda函数用于指定对列表中所有元素进行排序的准则。
sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
#列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序
# return [5, 4, 6, 3, 7, 2, 8, 1, 9]
  • map函数 此时lambda函数用于指定对列表中每一个元素的共同操作。
df['income']=list(map(lambda x: int(x+x*0.2),df['income']))

  • reduce函数 此时lambda函数用于指定列表中两两相邻元素的结合条件。
import functools
functools.reduce(lambda a,b: a+b,df['income'])

  1. 部分Python库函数也接收函数作为参数,例如gevent的spawn函数。此时,lambda函数也能够作为参数传入。

参考文章
1、https://www.analyticsvidhya.com/blog/2020/03/what-are-lambda-functions-in-python/
2、https://zhuanlan.zhihu.com/p/58579207

Python 3中的lambda函数使用相关推荐

  1. python中的lambda函数用法--无需定义函数名的函数或子程序,避免代码充斥着大量单行函数

    匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序. lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值. 要点: lambda 函数不能包含命令 包含 ...

  2. 一文让你彻底掌握【Python中的lambda函数】

    你应该听说过,应用Python,可以让你处理一天的重复工作量,缩短到几分钟甚至更短.从此解放上班时间,研究更多更有效率的工作方法.进一步提升工作效率,让工作更出彩.这不是广告,这是实锤图片. 本文和你 ...

  3. java lambda函数_最常用的 Java 8 中的 Lambda 函数(项目中实用笔记)

    最常用的 Java 8 中的 Lambda 函数(项目中实用笔记) 简介 Java 8 中的新特性,虽然现在都出到了Java14版本,不过在日常的开发过程中,8的版本是足够使用了,再说现在的8以上的版 ...

  4. python正态分布中的normal函数

    python正态分布中的normal函数 概念 1.正态分布又名高斯分布,是人们最常用的描述连续型随机变量的概率分布. 在金融学研究中,收益率等变量的分布假定为正态分布或者对数正态分布(取对数后服从正 ...

  5. 关于python中lambda函数的描述_关于Python中的lambda函数

    lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...

  6. 详解python中的lambda函数

    什么是lambda? lambda是Python中预留的一个关键词,当我们需要一个函数,而又不想重新去为函数命名时,我们就可以使用lambda关键词来简单的去定义一个函数,也就是所谓的匿名函数,它在我 ...

  7. Python中的lambda函数用法

    匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序.所谓匿名函数,通俗地说就是没有名字的函数,lambda函数没有名字,是一种简单的.在同一行中定义函数的方法. lambda函数一般 ...

  8. python中lambda函数if用法-Python中关于Lambda函数的使用总结

    lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...

  9. python中lambda函数_python中的lambda函数用法

    例1:传入多个参数的lambda函数 defsum(x,y):return x+y 用lambda来实现: p = lambda x,y:x+yprint(p(4,6)) 例2:传入一个参数的lamb ...

最新文章

  1. R语言文本挖掘NASA数据网络分析,tf-idf和主题建模
  2. ios jenkins配置_Jenkins + TestNG 实现自助式自动化测试平台
  3. 机器学习--多元线性回归
  4. ue4 怎么传递变量到另一个蓝图_资深建模教你放置UE4蓝图节点,所以你就不要偷懒啦,认真点学...
  5. 哥大计算机工程申请入口和登陆入口
  6. 我害怕接入IM云的开发者
  7. hdu 4588 Count The Carries 南京邀请赛
  8. linux能远程开机么,Linux 下如何实现远程开机
  9. 40 SD配置-销售凭证设置-分配计划行类别
  10. 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
  11. 将bat文件转化成exe
  12. 计算机网路实验四 IP协议分析
  13. Word 特殊符号的插入
  14. C语言I博客作业03
  15. pytroch、tensorflow对比学习—功能组件(数据管道、回调函数、特征列处理)
  16. 关于抽烟、戒烟、或者说是收放自如
  17. 打地鼠游戏(2D)学习笔记
  18. 转发器、网桥、路由器和网关的区别如下:
  19. 空间直角坐标系(XYZ)转经纬度(BLH)
  20. 滑动轨迹 曲线 python_Python 模拟真实运动轨迹,轻松完成长跑和打卡

热门文章

  1. ISME|不同饮食选择驱动反刍动物瘤胃微生物氢代谢
  2. 《锋利的JQuery》读书要点笔记3——事件和动画
  3. Flink-电商用户行为分析(网站总浏览量(PV)的统计)
  4. 解决问题:未连接到互联网 代理服务器出现问题 或者地址有误
  5. 计算机软考阅卷在哪里,揭秘!信息系统项目管理师考试是如何阅卷的?
  6. gui-gio:定时器的demo3
  7. 在线网页更新检查工具
  8. flask数据库迁移
  9. 4000字干货,看完就懂什么叫产品设计与产品设计流程
  10. ACM 寻找众多情侣堆中的两个基佬