当前位置:首页>python>lambda函数的应用场景|Python自学成才(番外篇10)

lambda函数的应用场景|Python自学成才(番外篇10)

  • 2026-09-11 00:36:32
lambda函数的应用场景|Python自学成才(番外篇10)

Python自学成才(番外篇10)|lambda函数的应用场景

上一篇,我们简单介绍了 lambda 的特性和语法。这一篇,我们作为 lambda 函数的补充,介绍其能实现的一些复杂计算语句和常见的应用场景。

三元表达式 lambda

在介绍 Python 的判断逻辑时,我们介绍过一种特殊的语法 —— 三元表达式,其语法是:

res = a if condition is True else b

即当条件 condition 满足时(计算结果为 True),res 的取值为 a,否则 res 的取值为 b。

由于 lambda 不能用多行代码写判断逻辑,因此三元表达式就是一种折中的措施。

单一条件判断

设计一个判断数字是奇数还是偶数的 lambda 函数,大家先思考 3 秒再看答案:

is_odd = lambda x: "奇数" if x % 2 != 0 else "偶数"print(is_odd(3))# Output: 奇数print(is_odd(8))# Output: 偶数

复合条件判断

如果嫌一个判断不够,我们可以把多个三元表达式组合起来。由三元表达式的格式来看,这一操作其实就是把 b 替换为一个新的三元表达。

这里举例设计一个用于判断分数级别的 lambda 函数:

level = lambda s: "A" if s >= 90 else "B" if s >= 60 else "C"print(level(98))# Output: Aprint(level(75))# Output: Bprint(level(34))# Output: C

lambda 的嵌套

在介绍函数的优雅玩法时,我们提到过,def 函数可以嵌套:Python学习笔记——从入门到报废(十五、函数更优雅(下))

那么,既然普通函数能嵌套,lambda 函数可不可以?

当然可以!

假设我们有这样一个函数:

把 x^2 看作一个整体 y = x^2,我们先用 lambda 解决 3.14 * y:

func1 = lambda y: 3.14 * y

然后再解决 y = x^2 部分:

func2 = lambda x: x * x

最终合起来计算就是:

func1(func2(x))

然后,我们展开为嵌套 lambda:

func = lambda x: (lambda y: 3.14 * y)(x * x)print(func(3))# Output: 28.26

lambda 的常见场景

元组列表排序

例如,设置一个列表,列表里都是二元元组,我们需要让这些元组按下标为 1 的值升序排序:

tl = [("A", 24), ("B", 18), ("C", 12)]tl = sorted(tl, key=lambda x: x[1])print(tl)# Output: [('C', 12), ('B', 18), ('A', 24)]

这一场景用法我们在介绍字典按 value 排序时提到过,大家可以回忆一下。

字典列表排序

参考上面的元组列表排序,列表里都是字典,我们想按照字典里 key 为某个特定内容的 value 进行排序。

例如,将学生成绩保存为字典,我们想按照学生的成绩排序:

dl = [    {"name": "张三", "score": 78},    {"name": "李四", "score": 89},    {"name": "王五", "score": 65}]dl = sorted(dl, key=lambda x: x["score"])print(dl)# Output: [{'name': '王五', 'score': 65}, {'name': '张三', 'score': 78}, {'name': '李四', 'score': 89}]

应用于过滤函数 filter()

filter() 函数的功能是用于将一个数据序列中,满足某个条件的内容留下来,其余删除:

filter(function, iterable):

  • function:一个函数,用于判断序列里的值是否满足某一条件;
  • iterable:一个数据序列,例如列表和元组。

其中,function 参数要求一个函数作为参数,此时我们就可以祭出 lambda 函数。例如我们剔除一个数据序列里的偶数,只保留奇数:

ls = [2, 5, 1, 4, 6, 3, 9, 8]res = list(filter(lambda x: x % 2 == 1, ls))print(res)# Output: [5, 1, 3, 9]

💡 注意:filter() 返回的是一个 filter 对象,因此需要对结果进行类型转换。

应用于批量处理函数 map()

map() 函数的作用是对一个数据序列里的元素统一进行某一操作,避免使用循环,例如将所有数字变为平方。

map(function, iterable)

  • function:一个函数,用于对元素进行统一的计算;
  • iterable:一个数据序列,例如列表和元组。

例如:

ls = [2, 5, 1, 4, 6, 3, 9, 8]res = list(map(lambda x: x ** 2, ls))print(res)# Output: [4, 25, 1, 16, 36, 9, 81, 64]

💡 注意:map() 返回的是一个 map 对象,因此需要对结果进行类型转换。


往期回顾:

Markdown的基本语法(三)

2026 年 7 月第 3 周 GitHub 热门项目

凭什么填了验证码才认定我是人?

匿名函数lambda的基础语法|Python自学成才(番外篇9)

Markdown的基本语法(二)

最新文章

随机文章