找回密码
 会员注册
查看: 38|回复: 0

Pythonlambda(匿名函数),一文详解

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
67441
发表于 2024-9-4 22:04:38 | 显示全部楼层 |阅读模式
前面的文章里,我们讲了什么是函数(CSDN函数详解),并且简单讲了一下什么是lambda(匿名函数)。现在我们详细讲讲什么是lambda函数?lambda函数的特点已经lambda函数的应用。也算是完善之前的内容。1.为什么要用lambdaLambda函数是一种匿名函数,也称为内联函数或者函数字面量。通常用于那些简单的、一次性的函数,这样可以避免定义一个完整的函数。例如,如果你只是想对一个列表的每个元素进行平方操作,你可以使用Lambda函数,而不需要定义一个单独的函数。既然Lambda作为函数,当然允许你将函数作为参数传递给其他函数,这样你就可以在需要的时候创建简单的、匿名的函数。下面是Lambda函数的优点和限制的总结:优点描述简洁性Lambda函数通常用于简单、一次性操作,使代码更简洁。匿名性Lambda函数是匿名的,适合作为参数传递给其他函数。功能性编程Lambda函数是函数式编程的强大工具,可进行函数组合、映射、过滤等操作。节省内存Lambda函数避免为一次性使用的简单函数占用额外空间,节省内存。限制描述只能有一个表达式Lambda函数的主体只能是单个表达式,不能包含多个语句或复杂逻辑。可读性Lambda函数通常用于简单操作,复杂逻辑会降低代码可读性,不适合复杂函数。不支持类型注解Lambda函数不支持像普通函数那样的类型注解,可能降低代码的可维护性。总之,Lambda函数为编程提供了一种灵活、简洁的方式来定义和使用函数,让对那些一次性的操作,更加得心应手。2.Lambda函数的语法Lambda函数的一般语法很简单,lambda关键字定义,后面跟着参数列表和一个表达式。lambdaarguments:expression'运行运行其中:lambda是定义Lambda函数的关键字。arguments是Lambda函数的参数列表,可以有零个或多个参数,多个参数之间用逗号分隔。expression是Lambda函数的表达式,即函数的具体实现逻辑。简单的用法:#定义一个简单的Lambda函数,对传入的参数求平方square=lambdax:x*x#调用Lambda函数result=square(5)print(result)#输出:25'运行运行上面的内容就是计算一个平方运算,直接返回结果。一定要记住,表达式的结果一定是“运算后返回的”。比如说:str=lambda:"Hello,world!"print(str())#输出:Hello,world!'运行运行这里的运算就是简单的返回结果。特别提醒:我们前面说过,函数变量加了括号就是执行函数,不加就是变量。不理解的可以看前面的文章。3.Lambda函数与普通函数的区别Lambda函数和传统的普通函数在定义和使用上有些许不同。特性Lambda函数普通函数定义方式使用lambda关键字定义,语法简洁使用def关键字定义名称匿名,没有函数名有明确的函数名参数数量可以有零个或多个参数,但表达式中只能有一个表达式可以有零个或多个参数,函数体内可以有多个语句4.Lambda函数的用法4.1作为参数传递给其他函数Lambda函数常用于将简单的逻辑作为参数传递给高阶函数,如map()、filter()等。#使用Lambda函数和map()函数将列表中的每个元素都平方numbers=[1,2,3,4,5]squared=list(map(lambdax:x*x,numbers))print(squared)#输出:[1,4,9,16,25]#使用Lambda函数和filter()函数筛选出列表中的偶数even_numbers=list(filter(lambdax:x%2==0,numbers))print(even_numbers)#输出:[2,4]'运行运行4.2在高阶函数中使用Lambda函数#使用Lambda函数定义一个自定义的排序规则students=[{'name':'Tiyong','grade':90},{'name':'Bob','grade':85},{'name':'Toy','grade':95}]#按照学生的成绩进行排序sorted_students=sorted(students,key=lambdax:x['grade'],reverse=True)print(sorted_students)#输出:[{'name':'Toy','grade':95},{'name':'Tiyong','grade':90},{'name':'Bob','grade':85}]'运行运行4.3创建简单的匿名函数Lambda函数可以用于需要一个简单函数来执行一些基本操作的情况。#求两个数的和add=lambdaa,b:a+bresult=add(10,20)print(result)#输出:30#求一个数的平方square=lambdax:x*xresult=square(5)print(result)#输出:25'运行运行5.lambda的应用示例下面用几个常见的例子来展示Lambda函数的应用。5.1map()函数map()函数接受一个函数和一个可迭代对象作为参数,然后将该函数应用于可迭代对象的每个元素,返回一个结果列表。#使用Lambda函数和map()函数将列表中的每个元素都平方numbers=[1,2,3,4,5]squared=list(map(lambdax:x*x,numbers))print(squared)#输出:[1,4,9,16,25]'运行运行5.2filter()函数filter()函数用于过滤序列中的元素,接受一个函数和一个可迭代对象作为参数,然后根据函数的返回值是True还是False来决定是否保留元素。#使用Lambda函数和filter()函数筛选出列表中的偶数even_numbers=list(filter(lambdax:x%2==0,numbers))print(even_numbers)#输出:[2,4]5.3在排序中的应用在排序的应用中,可以把Lambda函数作为排序的关键字,根据特定的条件对序列进行排序。#使用Lambda函数对列表进行排序names=['Tiyong','Bob','Toy','Alice']sorted_names=sorted(names,key=lambdax:len(x))print(sorted_names)#输出:['Bob','Toy','Alice','Tiyong']'运行运行6.注意事项和陷阱可读性:仅用于简单操作,避免复杂逻辑降低代码可读性。复杂逻辑建议使用命名函数代替。变量作用域ambda函数可以访问外部变量,但修改外部变量可能导致意外行为。异常处理:避免复杂异常处理逻辑。需要处理异常时,建议使用try-except块。调试:匿名函数增加调试难度。复杂逻辑或需要调试时,建议转换为普通函数。总结Lambda函数适用于简单操作,提高代码简洁性。复杂逻辑或需要调试时,还是建议使用普通函数。如果大家跟着我的代码一起学习,相信你一定会有所收获。我们下一篇文章仍然会继续Python高阶特性的讲解,欢迎大家和我一起继续学习、记录python的下一个知识点。如果感觉阅读对您还有些作用,可以评论留言,关注我。谢谢您的阅读!往期学习:Python安装教程(版本3.8.10)windows10Linux系统:安装Conda(miniconda)Conda快速安装的解决方法(Mamba安装)VSCode安装教程(版本:1.87.0)Windows10Python基础语法:从入门到精通的必备指南Python的基本数据类型Python数据类型间的转换(隐式、显式)-CSDN博客Python基础知识:运算符详解-CSDN博客Python基础知识:数字类型及数学函数详解-CSDN博客Python字符串操作及方法详解!一篇就搞定!-CSDN博客Python列表及其操作详解,从此不再迷茫!-CSDN博客Python元组(Tuple)深度解析!Python字典的使用技巧(一篇详解)Python条件控制深度解析,成为编程必备Python循环语句全解析(附实战演练)Python函数高效编程技巧,提升你的代码效率!Python模块和包全解析,一篇文章就够!Python新手必学:输入输出全攻略Python错误处理和异常(必要的攻略)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 01:18 , Processed in 0.536203 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表