2013-04-30 12 views
9

ソートに使用されていますが、実際にはこのコード行の個々の要素は何を意味していますか?これはどういう意味ですか?key = lambda x:x [1]?

key=lambda x: x[1] 

lambdax[1]などで[1] ...

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

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

Ehi!それは1時間前に尋ねられた別の質問に対する私の答えです! :D – fog

答えて

13

lambdaが効果的にインライン関数を作成する理由x:、何ですか。たとえば、あなたがこの例を書き換えることができます。

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])すべてより大きくなる配列の要素を返します。他の要素の第2要素のうちの1つ。関数呼出しが意味する別の方法は、x[1]キーとして使用してmax要素を返します。

10

lambdaは、anonymous functionを意味する。この場合、この関数は単一の引数xをとり、x[1]を返します(つまり、インデックス1の項目はxになります)。

今度はsort(mylist, key=lambda x: x[1])keyの値に基づいてmylistがソートされます。リストの各要素に適用されます。同様に、max(gs_clf.grid_scores_, key=lambda x: x[1])は、各要素に対してkeyによって返されるものに関して最大​​値gs_clf.grid_scores_を返します。

また、この特定の機能が既にライブラリの1つに含まれていることを指摘しておきます。operator。具体的にはoperator.itemgetter(1)keyに相当します。

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

これは機能です。 ここで、xはリストであり、ここではx[1]、つまりリストの2番目の要素がソート関数に追加されます。したがって、基本的には、すべてのリストの2番目の要素(x [1]など)をソート関数に追加します。 これを理解していただければ幸いです。

関連する問題