匿名函数lambda 表达式以及在 sorted() 函数中的使用

1. 什么是 lambda 表达式?
lambda 表达式是 Python 中创建匿名函数(没有名字的函数)的一种方式。它比传统的函数定义(使用 def)更简洁。

通常,lambda 表达式用于需要一个简单函数的场合,尤其是在作为参数传递给其他函数时。它的基本语法如下:

lambda 参数: 表达式

lambda:关键字,表示定义匿名函数。
参数:函数接收的输入,可以是一个或多个参数。
表达式:作为返回值或函数体,它会被自动计算并返回。
2. lambda 表达式的例子
让我们先看一些简单的 lambda 表达式的例子:


# 一个计算两个数相加的 lambda 表达式
add = lambda x, y: x + y
print(add(3, 5))  # 输出 8

# 一个返回平方数的 lambda 表达式
square = lambda x: x ** 2
print(square(4))  # 输出 16
在上面的代码中,lambda x, y: x + y 定义了一个匿名函数,它接收两个参数 x 和 y,并返回它们的和。

3. lambda 表达式与 sorted() 函数结合使用
接下来,我们来看你提到的这段代码:


sorted_li = sorted(li, key=lambda x: x[1])
这里的 lambda x: x[1] 是一个非常简单的匿名函数,它接收一个参数 x,并返回 x[1],即每个子列表中的第二个元素。这个 lambda 表达式在 sorted() 函数中用作排序依据。

4. 为什么要用 key=lambda x: x[1]?
sorted() 函数可以接受一个 key 参数,它告诉 sorted() 函数在排序时要依据某个特定的规则。在这里,lambda x: x[1] 就是排序规则的核心部分,表示“我们要按照每个子列表的第二个元素(x[1])来排序”。

例如,假设我们的列表是:


li = [[1, 10, 32], [3, 22, 99], [2, 7, 77]]
我们希望按照每个子列表中的第二个值来排序,那么 lambda x: x[1] 就是告诉 sorted() 函数:对每个子列表(如 [1, 10, 32]、[3, 22, 99]、[2, 7, 77])来说,排序的关键是第二个值(10、22 和 7)。

5. 整个排序过程
当你执行 sorted(li, key=lambda x: x[1]) 时,Python 会:

对 li 中的每个元素(即每个子列表)应用 lambda x: x[1],提取第二个值作为排序的依据。
根据这些提取出来的值进行排序,最终返回一个新的排好序的列表。
排序的步骤如下:

对 [1, 10, 32],第二个元素是 10;
对 [3, 22, 99],第二个元素是 22;
对 [2, 7, 77],第二个元素是 7;
然后按照这些值(10, 22, 7)排序,得到排序后的列表:


[[2, 7, 77], [1, 10, 32], [3, 22, 99]]
6. 总结
lambda 表达式用于定义简洁的匿名函数。
在 sorted() 函数中,key 参数允许你指定排序规则,lambda x: x[1] 表示你希望根据每个子列表的第二个元素进行排序。
lambda 表达式让代码变得简洁,尤其是在只需要简单函数的情况下,避免了定义一个单独的函数。

posted @ 2025-08-31 10:10  大海一个人听  阅读(43)  评论(0)    收藏  举报