2016-11-13 90 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返回两个字符串中最长的字符串。