首页 > Python资料 博客日记
Python lambda(匿名函数),一文详解
2024-07-28 04:00:05Python资料围观111次
前面的文章里,我们讲了什么是函数(CSDN函数详解),并且简单讲了一下什么是lambda(匿名函数)。
现在我们详细讲讲什么是 lambda 函数?lambda 函数的特点已经lambda 函数的应用。也算是完善之前的内容。
1. 为什么要用lambda
Lambda函数是一种匿名函数,也称为内联函数或者函数字面量。通常用于那些简单的、一次性的函数,这样可以避免定义一个完整的函数。例如,如果你只是想对一个列表的每个元素进行平方操作,你可以使用Lambda函数,而不需要定义一个单独的函数。既然Lambda作为函数,当然允许你将函数作为参数传递给其他函数,这样你就可以在需要的时候创建简单的、匿名的函数。
下面是Lambda函数的优点和限制的总结:
优点 | 描述 |
---|---|
简洁性 | Lambda函数通常用于简单、一次性操作,使代码更简洁。 |
匿名性 | Lambda函数是匿名的,适合作为参数传递给其他函数。 |
功能性编程 | Lambda函数是函数式编程的强大工具,可进行函数组合、映射、过滤等操作。 |
节省内存 | Lambda函数避免为一次性使用的简单函数占用额外空间,节省内存。 |
限制 | 描述 |
---|---|
只能有一个表达式 | Lambda函数的主体只能是单个表达式,不能包含多个语句或复杂逻辑。 |
可读性 | Lambda函数通常用于简单操作,复杂逻辑会降低代码可读性,不适合复杂函数。 |
不支持类型注解 | Lambda函数不支持像普通函数那样的类型注解,可能降低代码的可维护性。 |
总之,Lambda函数为编程提供了一种灵活、简洁的方式来定义和使用函数,让对那些一次性的操作,更加得心应手。
2. Lambda函数的语法
Lambda函数的一般语法很简单,lambda
关键字定义,后面跟着参数列表和一个表达式。
lambda arguments: expression
其中:
- lambda是定义Lambda函数的关键字。
- arguments是Lambda函数的参数列表,可以有零个或多个参数,多个参数之间用逗号分隔。
- expression是Lambda函数的表达式,即函数的具体实现逻辑。
简单的用法:
# 定义一个简单的Lambda函数,对传入的参数求平方
square = lambda x: 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(lambda x: x * x, numbers))
print(squared) # 输出: [1, 4, 9, 16, 25]
# 使用Lambda函数和filter()函数筛选出列表中的偶数
even_numbers = list(filter(lambda x: 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=lambda x: x['grade'], reverse=True)
print(sorted_students)
# 输出:[{'name': 'Toy', 'grade': 95}, {'name': 'Tiyong', 'grade': 90}, {'name': 'Bob', 'grade': 85}]
4.3 创建简单的匿名函数
Lambda函数可以用于需要一个简单函数来执行一些基本操作的情况。
# 求两个数的和
add = lambda a, b: a + b
result = add(10, 20)
print(result) # 输出: 30
# 求一个数的平方
square = lambda x: x * x
result = square(5)
print(result) # 输出: 25
5. lambda的应用示例
下面用几个常见的例子来展示Lambda函数的应用。
5.1 map()函数
map()函数接受一个函数和一个可迭代对象作为参数,然后将该函数应用于可迭代对象的每个元素,返回一个结果列表。
# 使用Lambda函数和map()函数将列表中的每个元素都平方
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x * x, numbers))
print(squared) # 输出: [1, 4, 9, 16, 25]
5.2 filter()函数
filter()
函数用于过滤序列中的元素,接受一个函数和一个可迭代对象作为参数,然后根据函数的返回值是True还是False来决定是否保留元素。
# 使用Lambda函数和filter()函数筛选出列表中的偶数
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出: [2, 4]
5.3 在排序中的应用
在排序的应用中,可以把Lambda函数作为排序的关键字,根据特定的条件对序列进行排序。
# 使用Lambda函数对列表进行排序
names = ['Tiyong', 'Bob', 'Toy', 'Alice']
sorted_names = sorted(names, key=lambda x: len(x))
print(sorted_names) # 输出: ['Bob', 'Toy', 'Alice', 'Tiyong']
6. 注意事项和陷阱
可读性:
- 仅用于简单操作,避免复杂逻辑降低代码可读性。
- 复杂逻辑建议使用命名函数代替。
变量作用域:
- Lambda函数可以访问外部变量,但修改外部变量可能导致意外行为。
异常处理:
- 避免复杂异常处理逻辑。
- 需要处理异常时,建议使用try-except块。
调试:
- 匿名函数增加调试难度。
- 复杂逻辑或需要调试时,建议转换为普通函数。
总结
Lambda函数适用于简单操作,提高代码简洁性。复杂逻辑或需要调试时,还是建议使用普通函数。
如果大家跟着我的代码一起学习,相信你一定会有所收获。我们下一篇文章仍然会继续Python高阶特性的讲解,欢迎大家和我一起继续学习、记录python的下一个知识点。
如果感觉阅读对您还有些作用,可以评论留言,关注我。谢谢您的阅读!
往期学习:
VSCode安装教程(版本:1.87.0)Windows10
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程