Paker - 10 months ago 53

Python Question

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 Source

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.