新手入门,深入解析 python lambda表达式

news2024/12/24 8:34:09

lambda 表达式是 Python 中的匿名函数。它接受任意数量的参数,并返回一个单个表达式的值。它的语法格式如下:
lambda arguments: expression

文章目录

    • lambda 函数原型解释
    • lambda 函数用作其它参数
    • lambda 函数高级的技巧
      • 多个参数
      • 返回多个值
      • 条件表达式
      • 嵌套 lambda 函数
    • lambda 实现闭包
    • lambda 注意事项
    • 总结

lambda 函数原型解释

在上述语法格式中, arguments 是参数列表,可以包含任意数量的参数, expression 是单个表达式,其值将作为函数的返回值。

下面是一个使用 lambda 表达式创建的计算两个数和的函数:

sum = lambda a, b: a + b
print(sum(33, 44)) # 输出 77

lambda 表达式的优势在于其简洁和易读性。

lambda 函数用作其它参数

lambda 函数可以作为参数传递给其它函数,这样可以使代码更简洁和灵活。
例如,我们可以使用 lambda 函数作为 sorted 函数的第二个参数,以排序一个列表:

numbers = [2, 3, 4, 5]
sorted_numbers = sorted(numbers, key=lambda x: x * -1)
print(sorted_numbers)

运行代码得到如下输出。

在这里插入图片描述

在上述代码中我们传递了一个 lambda 函数给 sorted() 函数的 key 参数。该函数接受一个参数 x ,并将其乘以 -1 ,以便将列表以降序排列。

lambda 函数还可以作为其它高阶函数(如 map()filter() )的参数,以实现更复杂的计算。例如,我们可以使用 lambda 函数和 map 函数来计算一个列表中所有数字的平方:

numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)

lambda 函数高级的技巧

多个参数

lambda 函数可以接受多个参数,并在函数体内对它们进行处理,例如:

sum = lambda x, y: x + y
result = sum(1, 2)
print(result)

返回多个值

lambda 函数可以返回多个值,并以元组形式返回。

divide = lambda x, y: (x / y, x % y)
result = divide(10, 3)
print(result) 

运行代码得到如下输出。

(3.3333333333333335, 1)

条件表达式

lambda 函数可以嵌套其他函数,并在函数体内使用条件语句。

get_sign = lambda x: "开心" if x >= 0 else "不开心"
result = get_sign(-5)
print(result)

嵌套 lambda 函数

可以在一个 lambda 函数内嵌套另一个 lambda 函数

mult = lambda x: (lambda y: x * y)
result = mult(3)(4)
print(result)

lambda 实现闭包

在 Python 中,lambda 函数可以实现闭包。

def make_adder(x):
    return lambda y: x + y

add_10 = make_adder(10)
add_20 = make_adder(20)

print(add_10(5)) # 15
print(add_20(5)) # 25

在上述代码中首先定义了一个名为 make_adder() 的函数,它接收一个参数 x ,并返回一个 lambda 函数。lambda 函数接收一个参数 y ,并返回 x + y 的值。

然后通过调用 make_adder(10)make_adder(20) ,我们分别创建了两个闭包 add_10 和 add_20,它们分别对应 x = 10 和 x = 20 的情况。

最后当我们调用 add_10(5) 时,它会返回 10 + 5 = 15 ;当我们调用 add_20(5) 时,它会返回 20 + 5 = 25

lambda 注意事项

  • 代码长度:lambda 函数只能写成一行,长度需要保持在可接受的范围内。
  • 可读性:对于较长的代码块,最好使用正常的函数定义,以提高代码的可读性。
  • 错误处理:lambda 函数不支持自定义的异常处理,因此需要在调用时小心处理。

lambda 函数并不适合复杂的逻辑或计算,它们通常是用来快速定义简单函数的。

总结

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 864 篇原创博客

👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

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

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

相关文章

java基础巩固-宇宙第一AiYWM:为了维持生计,编程语言番外篇之机器学习(项目预测模块总结:线性回归算法、逻辑回归分类算法)~整起

机器学习一、机器学习常见算法(未完待续...)1.算法一:线性回归算法:找一条完美的直线,完美拟合所有的点,使得直线与点的误差最小2.算法二:逻辑回归分类算法3.算法三:贝叶斯分类算法4…

PythonWeb开发基础(一)B/S开发和http协议

文章目录PythonWeb开发基础(一)B/S开发和http协议请求响应连接PythonWeb开发基础(一) B/S开发和http协议 推荐书籍:《HTTP权威开发指南》 前端:数据的格式化呈现,python中的format函数其实就…

【MyBatis】查询语句汇总

定义一个Car类:/*** 封装汽车相关信息的 pojo类*/ public class Car {// 数据库表当中的字段应该和pojo类的属性一一对应// 建议使用包装类, 这样可以防止null的问题private Long id;private String carNum;private String brand;private Double guidePrice;private String pro…

MATLAB入门——线性规划、非线性规划、多目标规划

4-1 线性规划_哔哩哔哩_bilibili 4-2 非线性规划_哔哩哔哩_bilibili 4-3 多目标规划_哔哩哔哩_bilibili 1.线性规划 有限条件下,最大收益 1. 例题 例题:张麻子既要攻碉楼又要追替身,他们一伙6人,总共1200发子弹;每有一人攻确…

【GCC】1: RTCP RR接收端生成

m79 代码。参考bytewoods 大神的以下文章:WebRTC 基于GCC的拥塞控制(上) WebRTC 基于GCC的拥塞控制(下)虽然可以拿到估算的带宽但是rtcp 总是malformed packet个 有必要带着问题跟进下整个过程 RR报文 基于丢包率的码率控制运行在发送端,依靠RTCP RR报文进行工作。* report b…

Vue2低代码平台搭建(一)

前言 大家好,我是L丶Y,这一次,我们来聊一聊前端低代码平台的构建。近些年来,随着Saas行业的高速发展,低代码的概念也逐渐流行了起来,而低代码产品也越来越多的出现在我们的身边,像国外的Mendix,国内的宜搭、苍穹、简道云等等,想通过这篇文章与大家对于前端低代码平台…

如何使用Baklib搭建企业内部wiki

Wiki 是一个协同著作平台或称开放编辑系统。我们可以用Wiki来建设帮助系统,知识库系统。国内公共wiki最著名就是百度百科,国外则是基维百科;Wiki最著名的例子之一是维基百科,它在MediaWiki上运行,任何拥有Web浏览器的人…

QT opencv 学习day02 基本数据结构 point Scalar Size Rect Mat 等等

1.point &#xff08;画点&#xff09; 1. 函数原型&#xff1a; //二维的点 typedef Point_<int> Point2i; typedef Point_<int64> Point2l; typedef Point_<float> Point2f; typedef Point_<double> Point2d; typedef Point2i Point;//三维的点…

EasyExcel 实现 批量生成多sheet多Excel打包zip下载

目录说明需求场景实现1、准备一个excel模板2、把整个excel模板放在resources里面3、重点代码效果图说明 需求场景 导出学校中高年级的学生信息&#xff0c;根据班级名称分组&#xff0c;一个班级一个excel导出&#xff0c;如果多个excel需要打包成zip压缩包下载&#xff0c;一…

Linux应用编程-音频应用编程-语音转文字项目

文章目录前言Linux语音识别alsa-lib简介&#xff1a;安装alsa-lib库&#xff1a;API调用录音相关概念样本长度&#xff08;Sample&#xff09;声道数&#xff08;channel&#xff09;帧&#xff08;frame&#xff09;周期&#xff08;period&#xff09;采样率&#xff08;Samp…

springboot整合JSR303参数校验与全局异常处理

一、前言 我们在日常开发中&#xff0c;避不开的就是参数校验&#xff0c;有人说前端不是会在表单中进行校验的吗&#xff1f;在后端中&#xff0c;我们可以直接不管前端怎么样判断过滤&#xff0c;我们后端都需要进行再次判断&#xff0c;为了安全。因为前端很容易拜托&#…

[面试八股] Mysql

1、Mysql中的索引类型 &#xff08;1&#xff09;普通索引&#xff08;2&#xff09;唯一索引&#xff08;3&#xff09;主键索引&#xff08;4&#xff09;组合索引&#xff08;5&#xff09;全文索引 缺点 1、虽然索引大大提高了查询速度&#xff0c;同时却会降低更新表的速…

Mysql高级部分学习笔记(二)——事务锁

一、buffer pool 1.1 缓冲池&#xff08;buffer pool&#xff09; 简介&#xff1a;InnoDB是基于磁盘存储的&#xff0c;并将其中的数据按页的方式进行管理。因此InnoDB可视为基于磁盘的数据库系统。由于CPU的速度和磁盘IO速度的巨大鸿沟&#xff0c;需要**缓冲池(buffer poo…

windows下通过uiAutomation技术获取ui元素

最近接个需求&#xff0c;要求获取 windows 下 ui 元素&#xff0c;经一番搜索后了解到可通过工具 UISpy.exe 或 inspect.exe 来进行查看。以软件 davinci resolve 为例&#xff1a; 右侧即 UISpy 工具&#xff0c;根据内容可以看出已捕获到 davinci 界面的各属性及对应值。而 …

ItextPdf 字体显示差异分析与处理

ItextPdf 同span下字体显示差异分析与处理 在文章itext7 字体问题解答与相应源代码分析 中是分析了框架的字体设置与相关代码&#xff0c;在本篇文章里将对其生效效果进行分析和相关问题进行处理&#xff08;可持续更新&#xff0c;问题请留言&#xff09; 问题一 问题说明&…

将无风险资产与两种风险资产进行组合

目录 最优风险资产组合。 计算权重的公式。 应用。 最优风险资产组合。 曲线 AB 是两种风险资产的权衡取舍线。 A 点为资产组合中仅有风险资产 1 的情况。将 O 点与 A 点相连&#xff0c;便得到无风险资产与单个风险资产的权衡取舍线。 实际上&#xff0c;曲线 AB 上任一点…

【青训营】分布式理论初探

本文内容总结自 字节跳动青年训练营 第五届后端组 分布式理论初探 一、概述 分布式系统是计算机程序的集合&#xff0c;这些程序利用横跨多个独立计算节点的计算资源实现共同目标&#xff0c;可分为分布式计算、分布式存储、分布式数据库。 其优势是&#xff1a;去中心化、…

ESP32设备驱动-TEA5767收音机模块驱动

TEA5767收音机模块驱动 1、TEA5767介绍 TEA5767HN 是一款用于低压应用的单芯片电子调谐 FM 立体声收音机,具有完全集成的中频 (IF) 选择性和解调功能,频率范围从76—108MHZ自动数字调谐。 该收音机完全无需调整,高灵敏度,高稳定性,低噪音,收音模块。只需要最少的小型低…

Win10安装MySQL、Pycharm连接Mysql、Pycharm中运行django

目录 一、windows系统mysql相关操作 1、检查当前系统是否已安装mysql 1. 按win r 键&#xff08;调出运行窗口&#xff09; 2. 输入service.msc&#xff0c;点击[ 确定 】 3.打开服务列表 - 检查是否有mysql服务 2、windows安装mysql 1.下载mysql 2. 解压 mysql 到自己…

【面试题:三个线程轮流打印A ,B,C】

面试题&#xff1a;三个线程轮流打印A &#xff0c;B&#xff0c;C面试介绍说明思考方案代码实现Print 打印基类APrint 打印字符A 线程CPrint 打印字符C 线程PrintConstant 常量类StrRun 启动类测试结果总结面试介绍说明 当时是2022 年3月 在深圳面试的一家公司。由于疫情比较…