当前位置:首页>python>【跟着AI学Python】第19天:lambda 与高阶函数

【跟着AI学Python】第19天:lambda 与高阶函数

  • 2026-08-26 06:15:53
【跟着AI学Python】第19天:lambda 与高阶函数
【Qwen3-Max:】

太棒了!欢迎来到 【跟着AI学Python】第19天!🎉今天我们将学习 Python 中函数式编程的核心工具:lambda 匿名函数 + 三大高阶函数 map()、filter()、sorted()!

💡 它们能让你用更简洁、声明式的方式处理数据,告别冗长的 for 循环!


🎯 第19天目标:

✅ 掌握 lambda 匿名函数 的语法与使用场景✅ 熟练使用 map() 对序列做批量转换✅ 灵活运用 filter() 过滤数据✅ 精准控制 sorted() 的排序逻辑


📘 一、lambda:匿名函数

🔹 语法

lambda 参数: 表达式
  • 只能包含一个表达式(不能写多行语句)
  • 自动返回表达式结果
  • 常用于临时、简单的函数场景

🔹 示例对比

场景
普通函数
lambda
平方
def square(x): return x**2lambda x: x**2
相加
def add(a, b): return a + blambda a, b: a + b
# 直接调用print((lambda x: x * 2)(5))  # 10# 赋值给变量(不推荐,不如 def 清晰)double = lambda x: x * 2print(double(3))  # 6

✅ 最佳实践:

  • 仅在简短、一次性场景使用(如传给 map/sorted)
  • 复杂逻辑 → 用普通函数(可读性更好)

📘 二、map():批量转换

🔹 作用

将函数应用到序列的每个元素,返回迭代器(惰性求值)

🔹 语法

map(function, iterable)

🔹 示例

💡 何时用 map vs 列表推导式?

  • 简单转换 → 列表推导式更 Pythonic
  • 已有现成函数(如 str.upper)→ map 更简洁:
    words = ["hello", "WORLD"]upper_words = list(map(str.upper, words))  # ['HELLO', 'WORLD']

📘 三、filter():条件过滤

🔹 作用

保留序列中使函数返回 True 的元素

🔹 语法

filter(function, iterable)

🔹 示例

✅ 优势:

  • 语义清晰:“过滤出满足条件的元素”
  • 与 map 组合实现复杂流水线

📘 四、sorted():灵活排序

🔹 核心参数

  • key=function:指定排序依据(函数接收元素,返回比较值)
  • reverse=True:降序排列

🔹 示例

🔹 实战:复杂对象排序

🔑 技巧:

  • key返回元组可实现多级排序
  • 用 -值 实现某字段降序(数值型)

💻 综合实战:数据清洗流水线

假设有一组用户数据,需要:

  1. 过滤掉无效邮箱(不含 @)
  2. 将邮箱转为小写
  3. 按域名排序
users = ["Alice@GMAIL.COM", "bob@yahoo.com", "invalid-email", "CHARLIE@outlook.com"]# 流水线处理valid_emails = sorted(    map(str.lower, filter(lambda email: "@" in email, users)),    key=lambda email: email.split("@")[1]  # 按 @ 后部分排序)print(valid_emails)# 输出: ['bob@yahoo.com', 'charlie@outlook.com', 'alice@gmail.com']

✅ 优势:

  • 无中间变量,逻辑链清晰
  • 内存高效(filter/map 返回迭代器)

✅ 今日小任务

  1. 用 map + lambda:将 ["1", "2", "3"]转为整数列表 → [1, 2, 3]
  2. 用 sorted + lambda:按单词长度对 ["apple", "pie", "banana"]
 排序 → ['pie', 'apple', 'banana']

📝 小结:高阶函数速查表

函数
作用
典型场景
map(func, iter)
批量转换
数据标准化、类型转换
filter(func, iter)
条件过滤
清洗无效数据
sorted(iter, key=func)
自定义排序
多字段排序、复杂对象排序

✅ 黄金法则:

  • 简单逻辑 → 优先用 列表推导式(更 Pythonic)
  • 需要组合操作 / 已有函数 → 用 高阶函数
  • lambda仅用于简短、一次性函数

🎉 恭喜完成第19天!你已掌握 函数式编程的利器,能写出更简洁、更声明式的代码!

继续加油,你的代码正变得越来越优雅!🐍

最新文章

随机文章