解释基本lamba函数和排序

时间:2016-12-08 18:00:59

标签: python function python-3.x sorting lambda

我刚刚完成了学校项目的代码,但是使用了一行代码来自堆栈溢出,这比我的“技能舒适区”中的知识略高一些。 我确实理解它的作用,为什么它存在等等。但仍然不能将它转换为我的个人报告的“人类语法”。任何人都可以给我一点时间,并尽可能准确地解释这一行代码中的底层机制吗?提前谢谢!

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

它在我的程序中的作用是按照第一列中的整数对字典进行排序,从最小到最大。

需要证明我完全理解这行代码,我坦率地不这样做。

谢谢!

2 个答案:

答案 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。在排序过程中使用这些值以获得所需的排序。