Paker Paker - 27 days ago 6
Python Question

Python syntax that I don't seem to understand

So I'm looking at this python code to find the longest subsequence of two strings but I don't understand "#line A" why the third parameter is key=len. From what I learnt len is a function which returns the length of a string but I don't understand how it's being used here.

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

Answer

The max function is by default computed on the natural values ordering.

But you can pass a function as alternate "key" to set your own criterion (same goes for sort).

Here the max of 2 passed values is done according to strings length, not strings alphanumerical ordering which would be the default: max returns the longest string of the two.