- 此问题在此处已有答案**:
Syntax behind sorted(key=lambda: ...) [duplicate](10个答案)
六年前关闭了。
我刚刚完成了一个学校项目的代码,但使用了堆栈溢出中的一行代码,这比我的"技能舒适区"中的知识稍微高级一些。我确实理解它的作用,为什么存在等等。但仍然不能将它转换为我个人报告的"人类语法"。有没有人能给我一点时间,尽可能准确地解释一下,这行代码的底层机制?提前感谢!
sites.sort(key = lambda x: x[0])
它在我的程序中的作用是按照字典第一列中的整数从最小到最大对字典进行排序。
我需要证明我完全理解这行代码,但坦白说我并不理解。
谢谢!
2条答案
按热度按时间kqhtkvqz1#
lambda函数基本上和其他函数一样,但有一些限制。它只能是一行,并且必须是表达式。当lambda函数被调用时,该表达式被求值,并返回该表达式的结果。
等于
在本例中,lambda函数作为键函数传递给
sort
方法。这些函数用于排序,以便根据值以外的内容对内容进行排序。sites
的每个元素e
都传递给键函数,然后根据f(e)
或e[0]
而不是e
的值对它们进行排序。rsaldnfx2#
当对一个对象调用sort时,Python会将该对象中包含的每个元素传递给你指定为
key
参数的函数。lambda
函数可分为以下几部分:在
lambda
函数中,有一个argx
作为<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
。这些值在排序过程中使用,以获得所需的排序。