【Python 必会技巧】lambda 表达式(匿名函数)及其在内置函数中的应用

lambda 表达式,又称匿名函数,即,函数没有具体的名称,常用来表示内部仅包含 1 行表达式的函数。

使用 lambda 编写的代码更加简洁紧凑,但是 lambda 函数支持的功能却是十分有限的,目前 PEP8 已经不建议使用 lambda,而是推荐使用 def 去定义一个函数,即便如此,作为 Python 程序员,认识和了解该匿名函数还是有必要的。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

lambda 的语法:lambda argument(s):expression

lambda 函数可以有很多个参数,但是只能有一个表达式。lambda 操作符不能有任何声明,它返回一个函数对象,可以将此函数对象赋值给任何变量。

lambda 函数简单示例:

lambda x, y: x * y     # 函数输入是 x 和 y,输出是它们的积 x*y
lambda:None     # 函数没有输入参数,输出是 None
>>> a = lambda x: x+1
>>> a(1)
2# 用 def 函数表示如下:>>> def a(x):return x+1
>>> a(1)
2

lambda 函数与 def 的主要不同点:

  • lambda 可以立刻传递(无需变量),自动返回结果;
  • lambda 在内部只能包含一行代码;
  • lambda 是一个为编写简单的函数而设计的,而 def 用来处理更大的任务;
  • lambda 可以定义一个匿名函数,而 def 定义的函数必须有一个名字。

lambda 函数的优势:

  • 对于单行函数,使用 lambda 表达式可以省去定义函数的过程,让代码更加简洁;
  • 对于不需要多次复用的函数,使用 lambda 表达式可以在用完之后立即释放,提高程序执行的性能。

lambda 函数经常用于一些内置函数中:

map() 函数:遍历序列,对序列中每个元素进行操作,此时 lambda 函数用于指定对列表中每一个元素的共同操作条件。

>>> list1 = [1, 2, 3, 4]
>>> list2 = [5, 6, 7 ,8]
>>> list3 = map(lambda a, b: a + b, list1, list2)     # 将两个列表中对应的元素相加
>>> print(list3)
<map object at 0x000001EA57C07780>
>>> print(list(list3))
[6, 8, 10, 12]

filter() 函数:对于序列中的元素进行筛选操作,此时 lambda 函数用于指定过滤列表元素的条件。

>>> list1 = [1, 2, 3, 4]
>>> list2 = filter(lambda a: a > 2, list1)     # 筛选出列表中大于 2 的元素
>>> print(list2)
<filter object at 0x000001EA57C07898>
>>> print(list(list2))
[3, 4]

reduce() 函数:对于序列中所有元素进行累积操作,此时 lambda 函数用于指定列表中两两相邻元素的累积条件。

>>> from functools import reduce
>>> list1 = [1, 2, 3, 4]
>>> list2 = reduce(lambda a, b: a + b, list1)     # 两两相邻元素进行相加操作
>>> print(list2)
10
>>> list2 = reduce(lambda a, b: a * b, list1)     # 两两相邻元素进行相乘操作
>>> print(list2)
24

sorted() 函数:对于序列中的元素进行排序操作,此时 lambda 函数用于指定对列表中所有元素进行排序的条件。

>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8]
>>> list2 = sorted(list1, key = lambda a: abs(4-a))     # 将列表元素按照与 4 的距离从小到大进行排序
>>> print(list2)
[4, 3, 5, 2, 6, 1, 7, 8]

其他资料:《不要在Python中编写 lambda 表达式了,不建议大家使用它》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)

今天想实现一个Search Product的功能&#xff0c;首先要将数据展示在页面&#xff0c;然后前端根据查询需求进行处理。之前是在salesforce中实现的&#xff0c;可以定义一个Search Product的页面&#xff0c;然后在页面中访问查询数据的Webservice即可。但是在Dynamic 365中并没…

【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

Python 中赋值语句不复制对象&#xff0c;而是在目标和对象之间创建绑定关系。对于自身可变或者包含可变项的集合对象&#xff0c;开发者有时会需要生成其副本用于改变操作&#xff0c;进而避免改变原对象。copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。…

【转】Dynamics CRM 365零基础入门学习(四)Dynamics 使用profiler插件调试流程

今天我们介绍一种在dynamics开发中经常会用到的调试操作&#xff0c;其中一种调试方式即是profile调试。以下是我在项目开发中记录的调试流程&#xff0c;可供参考使用。 1、打开插件注册工具&#xff0c;会看到install Profile,点击即可安装。 2、在插件注册器中选择要调试的s…

【Python 必会技巧】利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题

先举个例子&#xff0c;分别以不指定编码、指定编码为 utf-8、指定编码为 utf-8-sig 三种方式来做比较&#xff0c;再将写入 csv 文件和 txt 文件来做个对比 一、不指定编码方式&#xff0c;直接存入 csv 文件 import csvwith open(test.csv, w) as fp:writer csv.writer(fp)…

【转】Dynamics CRM 365零基础入门学习(五)权限管理

一&#xff1a;安全角色 Microsoft Dynamics 365中的安全角色是各种实体的特权和访问级别矩阵。 它们根据其功能分组在不同的选项卡下。 这些组包括&#xff1a;核心记录&#xff0c;营销&#xff0c;销售&#xff0c;服务&#xff0c;业务管理&#xff0c;服务管理&#xff0…

【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作

zip() 函数用于将可迭代的对象作为参数&#xff0c;将对象中对应的元素打包成一个个元组&#xff0c;然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致&#xff0c;则返回列表长度与最短的对象相同。 利用 * 号操作符&#xff0c;可以将元组解压为列表。 zip…

【转】Dynamics CRM 365零基础入门学习(七)Dynamics 365 DataMigrationUtility tool使用

SDK里有个工具叫DataMigrationUtility&#xff0c;这个工具适合两个CRM系统之间的数据迁移。例如&#xff1a;在项目上线之初会做数据初始化的工作&#xff0c;一般这个工作会在UAT开始前完成&#xff0c;当UAT完成之后再把这部分初始化数据迁移到生产环境。那我费了半天劲把数…

【Python 标准库学习】日期和时间处理库 — datetime

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ datetime 模块提供了可以通过多种方式操作日期和时间的类。在支持日期时间数学运算的同时&#xff0c;实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。 datet…

【Python 标准库学习】数据科学计算库 — math

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ math 模块官方文档&#xff1a;https://docs.python.org/3/library/math.html math 模块包含的函数按照用途可分为&#xff1a;数论与表示函数、幂函数与对数函数、三角函数、角度转换、双…

【转】Dynamics 365中的应用程序介绍

本人微信和易信公众号&#xff1a;微软动态CRM专家罗勇 &#xff0c;回复275或者20180630可方便获取本文&#xff0c;同时可以在第一间得到我发布的最新的博文信息&#xff0c;follow me&#xff01;我的网站是 www.luoyong.me 。 Dynamics 365引入了应用程序&#xff0c;为啥…

【Python 标准库学习】伪随机数生成库 — random

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ 随机函数在很多科学计算中都会用到&#xff0c;比如生成一系列随机数来计算平均值、高斯分布、伽马分布、贝塔分布、对数正态分布等。 几乎所有模块函数都依赖于基本函数 random() &#…

【转】Dynamics 365中配置和使用文件夹级别的跟踪(folder-level tracking)

本人微信和易信公众号&#xff1a;微软动态CRM专家罗勇 &#xff0c;回复274或者20180630可方便获取本文&#xff0c;同时可以在第一间得到我发布的最新的博文信息&#xff0c;follow me&#xff01;我的网站是 www.luoyong.me 。 Dynamics 365与Office 365可以方便紧密的集成…

【Python 标准库学习】多种操作系统接口和常用路径操作库 — os 与 os.path

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ os 模块简介&#xff1a;主流操作系统有 Windows、UNIX、Mac OS 等&#xff0c;os 模块为多种操作系统的访问提供了相关功能的支持&#xff0c;涉及对文件相关操作功能的实现、系统访问 Pa…

【转】Dynamics 365Online 如何启用手机端APP的离线功能

隐约记得365自带的手机app是支持离线功能的&#xff0c;但实际尝试后发现不行&#xff0c;断开网络后直接提示下图这样&#xff0c;无法操作了 然后就去查询了下最新版的Online设置离线的方式&#xff0c;步骤还挺多的&#xff0c;本篇即来分享下 第一步&#xff0c;首先要确定…

【Python 标准库学习】系统相关的参数和函数库 — sys

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ sys 模块提供了与 Python 解释器紧密相关的一些变量和函数&#xff0c;这些变量可能被解释器使用&#xff0c;也可能由解释器提供 sys 模块官方文档&#xff1a;https://docs.python.org/…

【转】Microsoft Teams快速上手系列-01Teams的前世今生

说到Teams&#xff0c;这到底是一个什么产品&#xff1f;有人说它是团队协作工具&#xff0c;有人说它是云视频系统&#xff0c;有人说它是Hub&#xff0c;还有人说它是微软有史以来发展最快的一个产品&#xff0c;还有人说它完全是一个高效办公神器。其实都是对的。 Teams集成…

【Python 标准库学习】时间相关的函数库 — time

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ time 模块提供了各种时间相关的函数&#xff0c;该模块中的大多数函数是调用了所在平台 C 语言库的同名函数&#xff0c;这些函数的语义因平台而异&#xff0c;可能会在不同的平台有不同的…

【转】响应式详解

一两年以前&#xff0c;我发现&#xff0c;很多人都被响应式搞得很懵逼。 现在&#xff0c;我依然发现&#xff0c;还是有很多人&#xff0c;依旧被响应式搞得很懵逼。 所以&#xff0c;我也很懵逼。 到底是哪个环节出了问题&#xff0c;让这么多学习前端的同学对于这个响应…

【Python 标准库学习】容器数据类型库 — collections

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ collections 模块实现了特定目标的容器&#xff0c;以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择。 collections 模块官方文档&#xff1a;https://docs.python.or…

【Python 标准库学习】安全哈希与摘要算法库 — hashlib

欢迎加入 Python 官方文档翻译团队&#xff1a;https://www.transifex.com/python-doc/ hashlib 模块针对不同的安全哈希和消息摘要算法实现了一个通用的接口。提供了常见的摘要算法&#xff0c;如MD5&#xff0c;SHA1等等。 摘要算法又称哈希算法、散列算法&#xff0c;摘要算…