我刚刚完成了学校项目的代码,但是使用了一行代码来自堆栈溢出,这比我的“技能舒适区”中的知识略高一些。 我确实理解它的作用,为什么它存在等等。但仍然不能将它转换为我的个人报告的“人类语法”。任何人都可以给我一点时间,并尽可能准确地解释这一行代码中的底层机制吗?提前谢谢!
sites.sort(key = lambda x: x[0])
它在我的程序中的作用是按照第一列中的整数对字典进行排序,从最小到最大。
需要证明我完全理解这行代码,我坦率地不这样做。
谢谢!
答案 0 :(得分:2)
lambda函数基本上与任何其他函数一样,但有一些限制。它只能是一行,而且必须是表达式。调用lambda函数并返回该表达式的结果时,将计算该表达式。
sites.sort(key = lambda x: x[0])
与
相同def f(x):
return x[0]
sites.sort(key = f)
在这种情况下,lambda函数作为关键函数传递给sort
方法。这些用于排序以基于除其值之外的其他内容对事物进行排序。 e
的每个元素sites
都会传递给关键函数,然后根据f(e)
或e[0]
而不是e
的值进行排序。
答案 1 :(得分:1)
在对象上调用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]
传递给lambda作为x
的值,lambda函数将返回x[0] == 1
,然后它将通过[0, 1, 2, 3]
它并返回x[0] == 0
。在排序过程中使用这些值以获得所需的排序。