Python unikający lambda dla klucza, który potrzebuje dwóch kallab (skład funkcji)

Pracowałem nadproblem projektu euler 14 i jako pierwsza próba podniosłem to brutalne rozwiązanie:

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)))

Moje pytanie dotyczy tej lambdy, zazwyczaj nie chcę ich używać, ale nie znam żadnego eleganckiego sposobu, aby tego uniknąć. Czy coś tam jest?functools lub inny, aby połączyć dwa kalarety lub inną zgrabną alternatywę, której brakuje?

questionAnswers(2)

yourAnswerToTheQuestion