授课语音

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 是一个接受两个参数 ab,并返回它们的和的 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 的结果。

五、总结

  1. Lambda 表达式 提供了一个简洁的方式来定义临时的函数,通常用于一些简单的计算。
  2. Lambda 表达式 只能包含一个表达式,不适合用来定义复杂的函数。
  3. Lambda 表达式 与 Python 内置函数(如 map()filter()sorted())一起使用时,能够极大简化代码,使得代码更加简洁和易读。
  4. 使用 Lambda 表达式时要注意其适用场景,避免过度使用导致代码难以理解。

掌握 Lambda 表达式能够使你在处理简单计算任务时更加高效、简洁,尤其是在函数式编程和高阶函数的使用中。

去1:1私密咨询

系列课程: