2013-04-30 10 views
9

Ich sehe es in der Sortierung verwendet, aber was bedeuten die einzelnen Komponenten dieser Codezeile eigentlich?Was bedeutet das: Schlüssel = Lambda x: x [1]?

key=lambda x: x[1] 

Was ist lambda, was x: ist, warum [1] in x[1] etc ...

Beispiele

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

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

Ehi! Das ist meine Antwort auf eine andere Frage, die vor etwa 1h gestellt wurde! : D – fog

Antwort

13

lambda effektiv eine Inline-Funktion erstellt. Zum Beispiel können Sie dieses Beispiel umschreiben:

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

eine benannte Funktion verwenden:

def element_1(x): 
    return x[1] 

max(gs_clf.grid_scores_, key=element_1) 

In diesem Fall kehrt max() das Element in diesem Array, dessen zweites Element (x[1]) größer ist als alle der zweiten Elemente der anderen Elemente. Eine andere Art der Formulierung ist, wie der Funktionsaufruf impliziert: Rückgabe des Elements max, unter Verwendung von x[1] als Schlüssel.

10

lambda bedeutet anonymous function. In diesem Fall nimmt diese Funktion das einzelne Argument x und gibt x[1] zurück (d. H. Das Element bei Index 1 in x).

Jetzt sort(mylist, key=lambda x: x[1]) sortiert mylist basierend auf dem Wert von key als auf jedes Element der Liste angewendet. Ähnlich gibt max(gs_clf.grid_scores_, key=lambda x: x[1]) den maximalen Wert von gs_clf.grid_scores_ in Bezug auf was auch immer zurückgegeben wird von key für jedes Element zurück.

Ich sollte auch darauf hinweisen, dass diese spezielle Funktion bereits in einer der Bibliotheken enthalten ist: operator. Insbesondere entspricht operator.itemgetter(1) Ihrem key.

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

Dies ist die Funktion. Und hier ist x die Liste, in der wir der Sortierfunktion x[1] hinzufügen. Also fügen wir grundsätzlich das zweite Element jeder Liste (d. H. X [1]) zur Sortierfunktion hinzu. Ich hoffe du verstehst das.