python ---lambda匿名函数介绍


Posted in Python onMarch 13, 2019

lambda特性:“一个语法,三个特性,四个用法”

一个语法

在Python中,lambda的语法是唯一的。其形式如下:

 lambda argument_list: expression

其中,lambda是Python预留的关键字,argument_list和expression由用户自定义。具体介绍如下。

1.这里的argument_list是参数列表。它的结构与Python中函数(function)的参数列表是一样的。具体来说,argument_list可以有非常多的形式。例如:

a,b
a=1,b=2
 
*args
 
**kwargs
 
a,b=1,*args

这里的lambda argument_list: expression表示的是一个函数。这个函数叫做lambda函数。

三个特性

lambda函数有如下特性:

  1. lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。
  2. lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
  3. lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。

下面是lambda函数实例:

  1. lambda:None;函数没有输入参数,输出是None
  2. lambda **kwargs: 1;输入是任意键值对参数,输出是1
  3. lambda x, y: x*y;函数输入是x和y,输出是它们的和x+y
  4. lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)

四个用法

由于lambda语法是固定的,其本质只有一种用法,那就是定义一个lambda函数。实际中,根据这个lambda函数应用场景的不同,可将lambda函数用法扩展为以下几种:

将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。

例如,为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:time.sleep=lambda x:None。这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。例如,执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。

部分Pytho内置函数接收函数做参数,典型的内置函数有这些:

  1. map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x%2, range(3)),其结果[0,1,0 ]。
  2. filter函数。此时lambda函数用于指定过滤列表元素的条件。例如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]
  3. 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距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。
  4. reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。例如reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是'1, 2, 3, 4, 5, 6, 7, 8, 9'。

以上所述是小编给大家介绍的python lambda匿名函数详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python的迭代器与生成器实例详解
Jul 16 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
Python import用法以及与from...import的区别
May 28 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Python实现决策树C4.5算法的示例
May 30 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python: 传递列表副本方式
Dec 19 Python
Numpy之reshape()使用详解
Dec 26 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
Python 在局部变量域中执行代码
Aug 07 Python
Python实现的列表排序、反转操作示例
Mar 13 #Python
Python实现的调用C语言函数功能简单实例
Mar 13 #Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 #Python
浅谈python标准库--functools.partial
Mar 13 #Python
Python3实现的简单三级菜单功能示例
Mar 12 #Python
Python3实现的简单工资管理系统示例
Mar 12 #Python
Python3模拟登录操作实例分析
Mar 12 #Python
You might like
改变Apache端口等配置修改方法
2008/06/05 PHP
PHP 面向对象实现代码
2009/11/11 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python反射的用法实例分析
2018/02/11 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python reques接口测试框架实现代码
2020/07/28 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
美国宠物商店:Wag.com
2016/10/25 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
工程造价专业大专生求职信
2013/10/06 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
中学生打架检讨书
2014/02/10 职场文书
社区健康教育工作方案
2014/06/03 职场文书
倡导文明标语
2014/06/16 职场文书
2014年党总支工作总结
2014/12/18 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书