Python第十九讲:Lambda匿名函数,一行代码搞定复杂逻辑 之前的那一讲当中, 我们把字典的全部遍历方式, 完整地进行了深入透彻的掌握, 从而可以娴熟地去拿出字典的键, 以及值, 还有键值对, 最终将核心数据结构里的关键难点给成功解决了。今日, 我们研习一个极为简约、频率超高、超级实用的知识点, 那便是匿名函数。这是独有的简洁语法, 它亦是后续高阶函数、数据排序、数据处理的根基础, 了解并掌握它, 能促使你的程序代码摆脱冗余, 变得精简且高级。一、什么是匿名函数首先拆解两个关键词1. 匿名, 不存在自定义的函数名, 没必要借助def关键字来进行定义标点。2. 关于函数, 它是这样的, 它拥有普通函数的全部那些核心功能, 它能够进行传参操作, 它在传参之后可以返回相应的结果。之前我们所学习的全都是有名的函数, 也就是def函数, 其格式完备, 适宜于复杂的逻辑。而匿名函数, 是那种轻量化的临时函数, 它专门被用于处理, 简单的、一次性的、单行的逻辑。核心适用场景- 临时使用、只执行一次的简单计算- 搭配高阶函数、map、使用- 简化代码减少冗余定义二、函数标准语法这是全网通用的固定格式直接背下来即可参数列表: 表达式语法拆解1. 固定关键字代表定义匿名函数2. 参数列表, 是可选的, 它支持0个参数, 也支持1个参数, 还支持多个参数, 其遵循普通函数参数的规则。3. : 固定分隔符4. 表达式 只能写一行运算结果会自动返回不需要写️ 重点区别拥有支持多行代码的属性, 具备循环功能的特性, 存在能够进行判断操作的能力, 包含处理复杂逻辑的本事的def函数, 需要手动返回值。- 函数仅支持单行表达式自动返回结果无关键字三、零基础实操5个核心案例始于简单, 渐至复杂, 一步一步, 亲手带着你, 将所有用法完全领会, 新手直接进行粘贴复制, 开展测试就行。案例1无参数匿名函数适用于固定结果的简单场景# 定义无参数匿名函数输出固定字符串msg : 学生零基础教程每日更新# 调用函数print(msg())运行结果学生零基础教程每日更新案例2单个参数匿名函数最常用场景实现简单数值运算# 计算一个数的平方 x: x ** 2# 测试调用print((3)) # 3的平方9print((5)) # 5的平方25案例3多个参数匿名函数支持同时传入多个参数实现多值运算# 计算两个数的和add x, y: x y# 测试print(add(10, 20)) # 输出30print(add(66, 34)) # 输出100案例4带判断逻辑的函数支持三元表达式判断实现简单分支逻辑形态: 要素: 达成之成效倘若所设之情形不然则为未达成之成效。# 判断数值是否为偶数这是一段代码逻辑, 它表示, 当x除以2的余数等于0时, x对应的值为“偶数”, 否则, x对应的值为“奇数”。print((8)) # 偶数print((7)) # 奇数案例5直接调用无需赋值变量匿名函数的精髓无需定义变量随写随用# 直接定义并调用计算两数乘积print(( x,y: x * y)(6, 7))# 运行结果42四、最大价值搭配高阶函数实战它的单独使用, 意义是有限的, 其核心用途, 在于搭配内置高阶函数, 而这, 也是工作方面、刷题之时、数据分析当中的高频考点。实战1搭配()自定义排序我们之前排序都是默认升序用可以自定义排序规则场景对学生成绩列表排序按分数从高到低# 列表嵌套元组(姓名, 分数)(“张三”, 78这个数值), (“李四”, 95这个数值), (“王五”, 86这个数值)。# key x: x 代表按照元组第二个元素分数排序 (, key x: x, True)print()运行结果包含这样几个元素, 分别是, 一个是标识为“李四”的元素, 其对应的值是95, 还有一个是标识为“王五”的元素, 其对应的值是86, 另外有一个是标识为“张三”的元素, 其对应的值是78。实战2搭配map()批量处理数据map函数可以对序列中所有元素统一执行一个逻辑场景将列表所有数值翻倍1, 2, 3, 4, 5# 批量翻倍 list(map( x: x*2, ))print()运行结果2, 4, 6, 8, 10实战3搭配()筛选数据函数可以过滤筛选符合条件的元素场景筛选列表中所有大于5的数字2, 6, 3, 9, 4, 7# 筛选大于5的数 list(( x: x 5, ))print()运行结果五、新手必避的3个坑1. 不能写多行代码只能写单行表达式循环、多行判断、复杂运算必须用def函数2. 不要过度使用如果强行使用复杂的逻辑那么就会致使代码变得晦涩难懂, 若使用简单逻辑, 复杂逻辑则要使用 def 来处理。3. 无默认参数、可变参数慎用新手优先用固定参数熟练后再拓展进阶用法六、本节课总结1. 是匿名轻量化函数语法 参数: 单行表达式2. 特点是, 没有函数名, 能够自动返回结果, 代码极为简洁, 仅仅支持单行逻辑。3. 核心用法单独临时调用、搭配/map/高阶函数4. 适用场景简单、一次性、批量数据处理大幅精简代码课后作业1. 写一个函数计算三个数字的平均值2. 用筛选出列表10,15,20,25,30中能被5整除的数3. 用对列表(3,4), (1,9), (5,2)按第二个元素升序排序