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读取浮点数和读取文本文件示例
May 06 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
详解python多线程之间的同步(一)
Apr 03 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
python实现打砖块游戏
Feb 25 Python
opencv 阈值分割的具体使用
Jul 08 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
Python离线安装各种库及pip的方法
Nov 28 Python
用Python制作音乐海报
Jan 26 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
vue组件间通信解析
2017/03/01 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
Angular排序实例详解
2017/06/28 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
Python字符编码判断方法分析
2016/07/01 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
实习销售业务员自我鉴定
2013/09/21 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
开学随笔
2015/08/15 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python