python-3.x 解释基本lambda函数和排序[重复]

v2g6jxz6  于 2022-12-20  发布在  Python
关注(0)|答案(2)|浏览(193)
    • 此问题在此处已有答案**:

Syntax behind sorted(key=lambda: ...) [duplicate](10个答案)
六年前关闭了。
我刚刚完成了一个学校项目的代码,但使用了堆栈溢出中的一行代码,这比我的"技能舒适区"中的知识稍微高级一些。我确实理解它的作用,为什么存在等等。但仍然不能将它转换为我个人报告的"人类语法"。有没有人能给我一点时间,尽可能准确地解释一下,这行代码的底层机制?提前感谢!

sites.sort(key = lambda x: x[0])

它在我的程序中的作用是按照字典第一列中的整数从最小到最大对字典进行排序。
我需要证明我完全理解这行代码,但坦白说我并不理解。
谢谢!

kqhtkvqz

kqhtkvqz1#

lambda函数基本上和其他函数一样,但有一些限制。它只能是一行,并且必须是表达式。当lambda函数被调用时,该表达式被求值,并返回该表达式的结果。

sites.sort(key = lambda x: x[0])

等于

def f(x):
    return x[0]
sites.sort(key = f)

在本例中,lambda函数作为键函数传递给sort方法。这些函数用于排序,以便根据值以外的内容对内容进行排序。sites的每个元素e都传递给键函数,然后根据f(e)e[0]而不是e的值对它们进行排序。

rsaldnfx

rsaldnfx2#

当对一个对象调用sort时,Python会将该对象中包含的每个元素传递给你指定为key参数的函数。
lambda函数可分为以下几部分:

lambda <args>: <what to do with args>

lambda函数中,有一个arg x作为<args><what to do with args>用于获取它的零元素。
元素x[0]将用于sort执行的比较。
在您的示例中,sites必须包含自身包含元素的元素,例如嵌套列表:l = [[1, 2, 3], [0, 1, 2, 3]]。使用这个例子,Python首先将[1, 2, 3]作为x的值传递给lambda,lambda函数将返回x[0] == 1,然后将[0, 1, 2, 3]传递给lambda,并返回x[0] == 0。这些值在排序过程中使用,以获得所需的排序。

相关问题