2016-11-13 93 views
0

所以我在看這個Python代碼來找到兩個字符串中最長的子序列,但我不明白「#line A」爲什麼第三個參數是key = len。從我學到的內容來看,len是一個返回字符串長度的函數,但我不明白它在這裏如何使用。我似乎不明白的Python語法

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

它是'max'函數的命名參數:https://docs.python.org/2/library/functions.html#max。基本上,對'lcs'的2次遞歸調用的結果賦予'len',然後進行比較。這基本上會返回最長的結果。 – Carcigenicate

+0

請在將來發布問題之前查找一些文檔。 – TigerhawkT3

回答

0

max函數默認按自然值排序計算。

但是,您可以傳遞一個函數作爲備用「關鍵」來設置您自己的標準(sort也是如此)。

這裏傳遞值的最大值是根據字符串長度來完成的,而不是字符串字母順序的默認值:max返回兩個字符串中最長的字符串。