2016-11-13 5 views
0

Also schaue ich diesen Python-Code, um die längste Teilfolge von zwei Strings zu finden, aber ich verstehe nicht "#line A", warum der dritte Parameter key = len ist. Von dem, was ich gelernt habe, ist len ​​eine Funktion, die die Länge einer Zeichenkette zurückgibt, aber ich verstehe nicht, wie sie hier benutzt wird.Python-Syntax, die ich nicht zu verstehen scheint

def lcs(xstr, ystr): 
    """ 
    >>> lcs('thisisatest', 'testing123testing') 
    'tsitest' 
    """ 
    if not xstr or not ystr: 
     return "" 
    x, xs, y, ys = xstr[0], xstr[1:], ystr[0], ystr[1:] 
    if x == y: 
     return x + lcs(xs, ys) 
    else: 
     return max(lcs(xstr, ys), lcs(xs, ystr), key=len) #line A 
+0

Es ist ein benannter Parameter der 'max' -Funktion: https://docs.python.org/2/library/functions.html#max. Im Grunde wird das Ergebnis der 2 rekursiven Aufrufe von "lcs" an "len" übergeben und dann verglichen. Dies liefert grundsätzlich das längste Ergebnis. – Carcigenicate

+0

Bitte lesen Sie einige Dokumente, bevor Sie eine Frage in der Zukunft stellen. – TigerhawkT3

Antwort

0

Die max-Funktion wird standardmäßig auf die Reihenfolge der natürlichen Werte berechnet.

Aber Sie können eine Funktion als alternativer "Schlüssel" übergeben, um Ihr eigenes Kriterium zu setzen (dasselbe gilt für sort).

Hier erfolgt die max von 2 übergebenen Werte nach Strings Länge, nicht Strings alphanumerische Reihenfolge, die die Standardeinstellung wäre: max gibt die längste Zeichenfolge der beiden zurück.

Verwandte Themen