简单谈谈python中的lambda表达式


Posted in Python onJanuary 19, 2018

最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下

1.lambda是什么

举个简单的例子:

func = lambda x: x*x

def func(x):
 return x*x

两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平方,代码会是什么样的,

def func(x):
  return x*x
map(func, [i for i in range(10)])
map(lambda x: x*x, [i for i in range(10)])

对比之下,效果还是显而易见。首先func函数的功能十分简单,而且很有可能只使用这一次,所以说我们在这里定义了一个功能简单、使用频次不高的函数。在这个例子中,使用lambda创建匿名函数不但不会影响代码的可读性,还能精简代码,减少不必要的函数调用。其实这种场景很常见,我们需要一个简单的单行函数,做一件简单的事,我们甚至连函数的名字都无需在意,此时lambda就是我们不错的选择。

2.是否使用lambda

lambda定义了一个匿名函数,使用它并不会带来代码执行效率的提升。lambda通常与map,reduce,filter在遍历列表时配合使用,但是一味的追求lambda的使用,对代码可读性往往带来灾难性的后果。python对lambda有着严苛的约束,毕竟它只能由一条表达式组成。lambda很方便不假,但是如果使用过度,程序的逻辑性看起来就不那么清晰,毕竟每个人对抽象的理解是不同的。

如果一个列表生成式,仅使用for,if,in就能实现,我不会使用lambda

如果函数不足够简单,涉及到循环等复杂逻辑,我会定义函数,让代码更具可读性,此时我不会使用lambda

在我看来,lambda的存在是为了减少单行函数的定义,所以只用来代替单行函数的定义就足够了。

Python 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
python操作oracle的完整教程分享
Jan 30 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
python多线程使用方法实例详解
Dec 30 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
Python中的整除和取模实例
Jun 03 Python
如何用Python徒手写线性回归
Jan 25 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 Python
python使用logging模块发送邮件代码示例
Jan 18 #Python
zookeeper python接口实例详解
Jan 18 #Python
Python获取当前函数名称方法实例分享
Jan 18 #Python
Python AES加密实例解析
Jan 18 #Python
快速了解python leveldb
Jan 18 #Python
Python实现动态图解析、合成与倒放
Jan 18 #Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 #Python
You might like
一个简单的php路由类
2016/05/29 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
python中split方法用法分析
2015/04/17 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
python实现括号匹配的思路详解
2018/08/23 Python
python异常触发及自定义异常类解析
2019/08/06 Python
django有哪些好处和优点
2020/09/01 Python
python 贪心算法的实现
2020/09/18 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
员工自我鉴定范文
2013/10/06 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
房地产开发项目建议书
2014/05/16 职场文书
食品流通安全承诺书
2014/05/22 职场文书
软环境建设心得体会
2014/09/09 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
优秀教研组申报材料
2014/12/26 职场文书
金榜题名主持词
2015/07/02 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL