第3课_Lambda表达式
热度🔥:49 免费课程
授课语音
Python Lambda 表达式知识点
一、Lambda 表达式概述
1. 什么是 Lambda 表达式
Lambda 表达式(或称为匿名函数)是 Python 中的一种简化定义函数的方式。Lambda 表达式允许你快速定义一个没有名字的函数,并且通常用于需要短小函数的场合,如 map()
、filter()
和 sorted()
等内置函数。
Lambda 表达式的语法格式如下:
lambda 参数1, 参数2, ... : 表达式
lambda
是 Python 中的关键词。- 参数是函数输入的参数。
- 表达式是函数体,通常返回某个计算结果。
与常规函数定义的区别:
- 常规函数使用
def
定义,可以包含多行代码,而 Lambda 表达式只有一个表达式,不能包含多行代码。 - Lambda 表达式一般用于短小、临时的功能,不需要给函数命名。
2. Lambda 表达式的特点
- 简洁:适合简短的函数定义。
- 匿名:没有函数名,通常用于临时的计算任务。
- 只能包含一个表达式:Lambda 表达式的主体是一个单一的表达式,不可以包含多个语句。
二、Lambda 表达式的基本用法
1. 基本示例
# 定义一个 Lambda 表达式
square = lambda x: x ** 2
# 调用 Lambda 表达式
result = square(5)
print(result)
输出:
25
注释:
lambda x: x ** 2
是一个 Lambda 表达式,它计算传入参数x
的平方。square
变量引用了该 Lambda 表达式,调用square(5)
会返回5
的平方。
2. 多个参数的 Lambda 表达式
# 定义一个 Lambda 表达式,计算两个数的和
sum = lambda a, b: a + b
# 调用 Lambda 表达式
result = sum(3, 7)
print(result)
输出:
10
注释:
lambda a, b: a + b
是一个接受两个参数a
和b
,并返回它们的和的 Lambda 表达式。- 调用
sum(3, 7)
返回的是3 + 7
的结果10
。
三、Lambda 表达式的应用场景
1. 配合 map()
使用
map()
函数用于对可迭代对象的每个元素应用一个函数并返回一个迭代器。常常用 Lambda 表达式来指定函数。
# 使用 map() 和 Lambda 表达式
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
# 输出结果
print(list(squared_numbers))
输出:
[1, 4, 9, 16, 25]
注释:
map()
将 Lambda 表达式应用到列表numbers
中的每个元素,返回每个元素的平方。list()
将结果转换为列表并输出。
2. 配合 filter()
使用
filter()
函数用于过滤序列中的元素,返回符合条件的元素。Lambda 表达式常常用于提供过滤条件。
# 使用 filter() 和 Lambda 表达式
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
# 输出结果
print(list(even_numbers))
输出:
[2, 4, 6]
注释:
filter()
将 Lambda 表达式应用到列表numbers
中的每个元素,筛选出所有能被 2 整除的偶数。list()
将结果转换为列表并输出。
3. 配合 sorted()
使用
sorted()
函数用于对可迭代对象进行排序,Lambda 表达式可以作为 key
参数,指定排序的依据。
# 使用 sorted() 和 Lambda 表达式进行排序
tuples = [(1, 'apple'), (2, 'banana'), (3, 'cherry')]
sorted_tuples = sorted(tuples, key=lambda x: x[1]) # 根据第二个元素(水果名称)排序
# 输出结果
print(sorted_tuples)
输出:
[(2, 'banana'), (1, 'apple'), (3, 'cherry')]
注释:
sorted()
对元组列表tuples
按照每个元组的第二个元素进行排序,即按照水果名称排序。
四、Lambda 表达式与匿名函数
Lambda 表达式的另一个应用场景是实现匿名函数。匿名函数是指没有名字的函数,常用于临时的计算或回调函数中。
# 使用 Lambda 表达式实现匿名函数
result = (lambda x, y: x * y)(3, 4)
print(result)
输出:
12
注释:
- 这个 Lambda 表达式没有给出名称,直接在括号内定义并立即调用,计算
3 * 4
的结果。
五、总结
- Lambda 表达式 提供了一个简洁的方式来定义临时的函数,通常用于一些简单的计算。
- Lambda 表达式 只能包含一个表达式,不适合用来定义复杂的函数。
- Lambda 表达式 与 Python 内置函数(如
map()
、filter()
和sorted()
)一起使用时,能够极大简化代码,使得代码更加简洁和易读。 - 使用 Lambda 表达式时要注意其适用场景,避免过度使用导致代码难以理解。
掌握 Lambda 表达式能够使你在处理简单计算任务时更加高效、简洁,尤其是在函数式编程和高阶函数的使用中。