2016-11-13 16 views
0

このPythonコードを見て、2つの文字列の中で最も長い部分列を探していますが、なぜ3番目のパラメータが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は2つのうち最も長い文字列を返します。

関連する問題