Python 我似乎不明白的语法
Python syntax that I don't seem to understand
所以我正在查看这段 python 代码来查找两个字符串的最长子序列,但我不明白“#line A”为什么第三个参数是 key=len。据我了解,len 是一个 returns 字符串长度的函数,但我不明白它在这里是如何使用的。
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
max
函数默认按自然值顺序计算。
但是你可以传递一个函数作为备用 "key" 来设置你自己的标准(同样适用于 sort
)。
此处最大的 2 个传递值是根据字符串长度完成的,而不是默认的字符串字母数字顺序:max
returns 两个中最长的字符串。
所以我正在查看这段 python 代码来查找两个字符串的最长子序列,但我不明白“#line A”为什么第三个参数是 key=len。据我了解,len 是一个 returns 字符串长度的函数,但我不明白它在这里是如何使用的。
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
max
函数默认按自然值顺序计算。
但是你可以传递一个函数作为备用 "key" 来设置你自己的标准(同样适用于 sort
)。
此处最大的 2 个传递值是根据字符串长度完成的,而不是默认的字符串字母数字顺序:max
returns 两个中最长的字符串。