Python vermeidet Lambda für Schlüssel, der zwei Callables benötigt (Funktionszusammensetzung)

Ich habe daran gearbeitetProjekt Euler Problem 14 Und als ersten Versuch habe ich diese Brute-Force-Lösung entwickelt:

def collatz(n, memo={1: [1]}):
    if n not in memo:
        memo[n] = [n] + collatz(3 * n + 1 if n % 2 else n // 2)
    return memo[n]

def p014():
    return max(xrange(1, 10**6), key=lambda n: len(collatz(n)))

Meine Frage bezieht sich auf dieses Lambda, ich zögere normalerweise, es zu verwenden, aber ich kenne keinen eleganten Weg, um es in diesem Fall zu vermeiden. Ist da etwas drin?functools Oder eine andere, um zwei Callables zu verketten, oder eine andere nette Alternative, die ich vermisse?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage