• Python
  • lambda教程 python 0基础 通俗易懂

  • @ 2025-4-12 13:48:58

1. 什么是 lambda 函数

在 Python 里,lambda 函数也被叫做匿名函数,它属于一种小型的、一次性使用的函数。和常规函数不同,lambda 函数无需使用 def 关键字来定义,也不用为其指定一个具体的函数名。它主要用于创建简单的函数,能让代码变得更加简洁。

2. 基本语法

lambda 函数的基本语法如下:

lambda arguments: expression

这里的 arguments 代表函数的参数,可以是零个或者多个参数,参数之间用逗号分隔;expression 则是函数要执行的表达式,该表达式的计算结果会作为函数的返回值。

3. 简单示例

下面通过几个简单的例子来理解 lambda 函数的使用。

示例 1:计算两个数的和

# 使用 lambda 函数定义一个求和函数
add = lambda x, y: x + y

# 调用这个函数
result = add(3, 5)
print(result)  # 输出 8

在这个例子中,lambda x, y: x + y 定义了一个匿名函数,它接收两个参数 xy,并返回它们的和。接着把这个匿名函数赋值给变量 add,之后就可以像调用普通函数一样调用 add 函数。

示例 2:计算一个数的平方

# 使用 lambda 函数定义一个求平方的函数
square = lambda x: x ** 2

# 调用这个函数
result = square(4)
print(result)  # 输出 16

这里 lambda x: x ** 2 定义了一个匿名函数,它接收一个参数 x,并返回 x 的平方。然后把这个匿名函数赋值给变量 square 并调用。

4. lambda 函数的使用场景

作为参数传递给其他函数

lambda 函数常被当作参数传递给其他函数,例如 sorted()map()filter() 等。

示例 3:使用 sorted() 函数对列表中的元素按某个规则排序
# 定义一个包含元组的列表
students = [('Alice', 20), ('Bob', 18), ('Charlie', 22)]

# 使用 lambda 函数按年龄对学生进行排序
sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students)
# 输出 [('Bob', 18), ('Alice', 20), ('Charlie', 22)]

在这个例子中,sorted() 函数的 key 参数接收一个函数,该函数用于指定排序的规则。这里使用 lambda 函数 lambda student: student[1] 表示按照每个元组的第二个元素(即年龄)进行排序。

示例 4:使用 map() 函数对列表中的每个元素进行操作
# 定义一个列表
numbers = [1, 2, 3, 4]

# 使用 map() 函数和 lambda 函数计算每个元素的平方
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 输出 [1, 4, 9, 16]

map() 函数会对 numbers 列表中的每个元素应用 lambda 函数 lambda x: x ** 2,并将结果存储在一个新的可迭代对象中,最后使用 list() 函数将其转换为列表。

示例 5:使用 filter() 函数过滤列表中的元素
# 定义一个列表
numbers = [1, 2, 3, 4, 5, 6]

# 使用 filter() 函数和 lambda 函数过滤出偶数
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出 [2, 4, 6]

filter() 函数会根据 lambda 函数 lambda x: x % 2 == 0 的结果过滤 numbers 列表中的元素,只保留那些使 lambda 函数返回 True 的元素,最后将结果转换为列表。

5. 注意事项

  • 功能简单lambda 函数适合实现简单的功能,若要实现复杂的逻辑,建议使用普通的 def 函数。
  • 只能有一个表达式lambda 函数只能包含一个表达式,不能包含多条语句。

通过以上内容,你应该对 Python 中的 lambda 函数有了基本的了解,可以在合适的场景中运用它来简化代码。

0 条评论

目前还没有评论...