2013-04-30 5289 views
9

我看到它用于排序,但这行代码的单个组件实际上意味着什么?这是什么意思:key = lambda x:x [1]?

key=lambda x: x[1] 

什么lambda,什么是x:,为什么[1]x[1]等等

例子

max(gs_clf.grid_scores_, key=lambda x: x[1]) 

sort(mylist, key=lambda x: x[1]) 
+0

Ehi!这是我对1小时前问的另一个问题的回答! :d – fog 2013-04-30 22:40:24

回答

13

lambda有效地创建一个内联函数。例如,你可以重写这个例子:

max(gs_clf.grid_scores_, key=lambda x: x[1]) 

使用命名函数:

def element_1(x): 
    return x[1] 

max(gs_clf.grid_scores_, key=element_1) 

在这种情况下,max()将其数组,其第二元件(x[1])在返回元件比所有大其他要素的第二要素。措辞的另一种方法是函数调用暗示:返回最大元素,使用x[1]作为密钥

10

lambda表示anonymous function。在这种情况下,该函数采用单个参数x并返回x[1](即x中索引1处的项目)。

现在,sort(mylist, key=lambda x: x[1])根据应用于列表中的每个元素的key的值对mylist进行排序。同样,max(gs_clf.grid_scores_, key=lambda x: x[1])返回的最大值为gs_clf.grid_scores_,相对于每个元素的返回值key

我还应该指出,这个特定的功能已经包含在其中一个库中:operator。具体而言,operator.itemgetter(1)相当于您的key

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

这是函数。 这里x是列表,我们在其中添加x[1],即列表的第二个元素到排序函数。因此,基本上我们将每个列表的第二个元素(即x [1])添加到排序函数中。 我希望你明白这一点。