Python中lambda指的是什么

发布时间:2020-09-08 14:53:20

来源:亿速云

阅读:66

作者:小新

这篇文章将为大家详细讲解有关Python中lambda指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda?

下面就上面的问题进行一下解答。

lambda是什么?

看个例子:g = lambda x:x+1

看一下执行的结果:g(1)>>>2g(2)>>>3

当然,你也可以这样使用:lambda x:x+1(1)>>>2

可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:def g(x):2 return x+1

非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。

Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce:>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

>>>>>> print filter(lambda x: x % 3 == 0, foo)

[18, 9, 24, 12, 27]>>> >>> print map(lambda x: x * 2 + 10, foo)

[14, 46, 28, 54, 44, 58, 26, 34, 64]

>>>>>> print reduce(lambda x, y: x + y, foo)139

上面例子中的map的作用,非常简单清晰。但是,Python是否非要使用lambda才能做到这样的简洁程度呢?在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。

比如上面map的例子,可以写成:print [x * 2 + 10 for x in foo]

非常的简洁,易懂。

filter的例子可以写成:print [x for x in foo if x % 3 == 0]

同样也是比lambda的方式更容易理解。

上面简要介绍了什么是lambda,下面介绍为什么使用lambda,看一个例子(来自apihelper.py):processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)

在Visual Basic,你很有可能要创建一个函数,接受一个字符串参数和一个 collapse 参数,并使用 if语句确定是否压缩空白,然后再返回相应的值。这种方式是低效的,因为函数可能需要处理每一种可能的情况。每次你调用它,它将不得不在给出你所想要的东西之前,判断是否要压缩空白。在 Python 中,你可以将决策逻辑拿到函数外面,而定义一个裁减过的 lambda函数提供确切的 (唯一的) 你想要的。这种方式更为高效、更为优雅,而且很少引起那些令人讨厌 的错误。

通过此例子,我们发现,lambda的使用大量简化了代码,使代码简练清晰。但是值得注意的是,这会在一定程度上降低代码的可读性。如果不是非常熟悉python的人或许会对此感到不可理解。lambda 定义了一个匿名函数

lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

如果可以使用for...in...if来完成的,坚决不用lambda。

如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。

总结:lambda 是为了减少单行函数的定义而存在的。

关于Python中lambda指的是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

python里lambda是什么_Python中lambda指的是什么相关推荐

  1. python中lambda()的用法_python中lambda()的用法

    在C++11和C#中都有匿名函数的存在.下面看看在python中匿名函数的使用. 1.lambda只是一个表达式,函数体比def简单很多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能 ...

  2. python里的join方法_python中join()方法介绍

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...

  3. python wheel是什么意思_python中wheel指的是什么

    python中wheel指的是什么 发布时间:2020-09-08 14:54:33 来源:亿速云 阅读:55 作者:小新 这篇文章给大家分享的是有关python中wheel指的是什么的内容.小编觉得 ...

  4. python里order什么意思_python中OrderedDict的使用方法详解

    很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集.集合),里面自带了一个子类 OrderedDict,实现了对字典对象 ...

  5. [转载] python里字典的用法_python中字典(Dictionary)用法实例详解

    参考链接: Python字典dictionary copy方法 本文实例讲述了python中字典(Dictionary)用法.分享给大家供大家参考.具体分析如下: 字典(Dictionary)是一种映 ...

  6. python里none什么意思_python中stream=None什么意思?

    这大概是函数定义/参数相关知识吧,这是默认/可选参数.如果你是看 Python 的官方文档,以 Python 3.7.7 版本为例子,路径是: Python 3.7.7 documentation & ...

  7. python里的符号区别_Python中的方括号和点符号有什么区别?

    点运算符用于访问任何对象的属性.例如,复数>>> c = 3+4j 具有(除其他外)两个属性real和imag:>>> c.real 3.0 >>> ...

  8. python里什么叫子图_Python中的两个子图(matplotlib)

    我想在 Python中创建两个子图(使用Anaconda 2.7),但我编写的代码生成两个图,两者都没有显示太多. 这是代码: import pandas as pd import pandas.io ...

  9. python里none什么意思_Python 中None的用法

    python中通过试用None增加原始数组的维度,增加的维度取决于None出现的位置. 例如对于一维数组t而言 t = np.arange(5) t tn2 = t[:,None] tn1 = t[N ...

  10. python里数字怎么表示_Python 中的数字—Python 学习笔记

    今天讲一下 Python 中六种标准数据类型之一:数字. 整数 整数可以执行加减乘除运算,+代表加法, -代表剪法, *代表乘法./代表除法, %代表求余数: >>> 1+2 3 & ...

最新文章

  1. Git 常用操作(5)- git clone/git checkout -b/git diff/git push/git pull
  2. 将ubuntu光盘作为安装源_[转载]Ubuntu 以光盘做为软件源
  3. Mysql中对table的操作问题
  4. springboot统一异常处理类及注解参数为数组的写法
  5. Java线程的状态转换
  6. 商城项目实战2-登录模块的实现
  7. 文件处理之解决使用 feof(c语言)或(fin.eof())出现多读问题
  8. vue vuex 挂载_vue.js,javascript_Vuex的初始化失败,一直显示没有挂载到根组件上,奇怪了!,vue.js,javascript - phpStudy...
  9. 苹果切换系统按哪个键_Mac如何切换系统?
  10. 在类库文件无法使用Server.MapPath
  11. 344.Reverse String
  12. Itil v3 process model
  13. matlab中idwt,matlab图片处理
  14. 关于VC6.0一些常见问题和解决方案
  15. VScode下载安装及使用教程
  16. java计算机毕业设计html5大众汽车网站MyBatis+系统+LW文档+源码+调试部署
  17. 读取xml文件转成ListT对象的两种方法
  18. nvidia驱动卸载与安装
  19. WebSestalt,好用的富集分析工具,介绍及使用教程
  20. C语言程序改错和标答不同,C语言程序设计试题及答案3

热门文章

  1. 睿智的目标检测46——Pytorch搭建自己的Centernet目标检测平台
  2. 猴子排序与聪明的猴子排序
  3. 避免内容失去焦点_痛楚难以避免,而磨难可以选择
  4. 聊一聊那些应该了解的大佬(飞控,人工智能方向)
  5. springBoot2学习
  6. 小程序 蓝牙连接(出现的问题和一些解决方法)
  7. Texturepackage工具免费申请正版密钥
  8. 画fits图像上的极小值点
  9. php替换word字符串,word怎么用符号替换字符
  10. 自动驾驶基础知识(二)——术语中英文对照