Python Lambda 与高阶函数
学习 lambda 表达式和 map/filter/reduce · 难度:进阶 · +15XP
Python Lambda 与高阶函数
Python Lambda 与高阶函数 — 匿名函数的力量
学习前的准备
打开终端,输入 python 进入交互式解释器。你需要理解 Python 函数的基本定义。
什么是 Lambda 函数?
Lambda 函数也叫“匿名函数”——一个没有名字的小型函数。它的核心特点是:只能包含一个表达式,不需要写 return(表达式的结果自动返回)。
# 传统函数
def add(x, y):
return x + y
print(add(3, 5)) # 8
# Lambda 等价写法
add_lambda = lambda x, y: x + y
print(add_lambda(3, 5)) # 8
# 语法:lambda 参数1, 参数2, ... : 表达式
Lambda 的典型使用场景
# 排序——sorted() 的 key 参数
students = [
{"name": "张三", "score": 85},
{"name": "李四", "score": 92},
{"name": "王五", "score": 78}
]
ranked = sorted(students, key=lambda s: s["score"], reverse=True)
# 按字符串长度排序
words = ["apple", "pie", "banana", "do"]
words.sort(key=lambda w: len(w))
print(words) # ['do', 'pie', 'apple', 'banana']
高阶函数:map、filter、reduce
nums = [1, 2, 3, 4, 5]
# map:对每个元素执行相同操作
squared = list(map(lambda x: x ** 2, nums))
print(squared) # [1, 4, 9, 16, 25]
# filter:筛选符合条件的元素
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [2, 4]
# reduce:归并计算
from functools import reduce
total = reduce(lambda acc, x: acc + x, nums, 0)
print(total) # 15
Lambda 的局限性
如果逻辑比较复杂(多行、多条语句),就应该老老实实写 def 函数。记住:如果一个 lambda 让你犹豫了 3 秒钟,那就用 def。
小结
Lambda 是“用完即弃”的小函数,语法是 lambda 参数: 表达式。它最常见的用途是作为 sorted、map、filter 等函数的 key 或处理函数。当逻辑简单到一行能表达时,上 lambda;当逻辑需要多行时,老老实实写 def。