Python `lambda` 函数详解:写给初学者的极简教程

🚀 Python lambda 函数详解:写给初学者的极简教程

在 Python 中,我们常常会遇到一种特殊的函数 ------ lambda

它不像普通的函数那样用 def 来定义,而是一个匿名函数,适合处理一些"一次性"的简单逻辑。

本文将带你从零了解 lambda 的定义、用法、场景及注意事项。


📌 什么是 lambda 函数?

lambda 是 Python 中的匿名函数,常用于需要临时函数对象的场景,比如排序、过滤、映射等。

python 复制代码
lambda 参数1, 参数2, ..., 参数N: 表达式
  • lambda 关键字表示这是一个匿名函数。
  • 冒号后是一个表达式(不是语句),它的值就是返回值。
  • lambda 会自动返回这个表达式的结果。

🧪 入门示例

python 复制代码
# 普通写法
def add(x, y):
    return x + y

# lambda 写法
add = lambda x, y: x + y

print(add(3, 5))  # 输出:8

💡 常见使用场景

✅ 1. sorted() 自定义排序

python 复制代码
students = [("Alice", 85), ("Bob", 90), ("Charlie", 80)]

# 按成绩排序(升序)
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)

✅ 2. map() 做批量转换

python 复制代码
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, nums))
print(squares)  # [1, 4, 9, 16]

✅ 3. filter() 条件过滤数据

python 复制代码
nums = [1, 2, 3, 4, 5, 6]
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums)  # [2, 4, 6]

✅ 4. 一次性回调函数(如按钮事件)

python 复制代码
import tkinter as tk

btn = tk.Button(text="点击", command=lambda: print("点击了按钮"))
btn.pack()

适用于临时逻辑,无需额外定义函数。


⚠️ 注意事项

注意点 说明
表达式 lambda 后面只能写表达式,不能写多行语句
适用范围 适合短小、一次性使用的函数
可读性 过度使用 lambda 可能会让代码难懂,需权衡

🧩 实战技巧:多级排序

当我们排序时遇到主键相同时,可加入备用排序键:

python 复制代码
students = [("Alice", 85), ("Bob", 90), ("Charlie", 85)]
# 成绩一样时按名字排序
sorted_students = sorted(students, key=lambda x: (x[1], x[0]))

📷 多级排序图示:\


🎯 总结

lambda 是 Python 中的一个小巧精悍的函数表达式工具,适合用于 map、filter、sorted、GUI 回调等

相关推荐
张哈大22 分钟前
MCP:重塑AI工具调用的统一标准,告别重复造轮子的时代
人工智能·python·ai·prompt
极光代码工作室23 分钟前
基于深度学习的智能图像识别平台
python·深度学习·机器学习·ai·系统设计
copyer_xyf27 分钟前
Python 文件基本操作
前端·后端·python
嘶哈哈哈30 分钟前
# SolidWorks 启动提示“无法获得下列许可 SOLIDWORKS Standard”的解决思路
python
zh路西法36 分钟前
【rosbridge-websocket】跨网络的ROS1与ROS2通讯法(上)
linux·网络·c++·python·websocket·网络协议
圆弧YH37 分钟前
python→ Language
python
装不满的克莱因瓶38 分钟前
掌握神经网络的模型结构
人工智能·python·深度学习·神经网络·机器学习·ai
稷下元歌40 分钟前
7天学会plc加机器视觉关于运动控制部份,配套视频在bib
开发语言·c++·git·vscode·python·docker·pip
奋斗的小方40 分钟前
Java进阶篇1-1:异常
java·开发语言·python
颜酱44 分钟前
LangChain 调大模型:模板拼接 + invoke / stream / batch
python·langchain