Python, исключающий лямбду для ключа, который требует двух вызовов (состав функции)

Я работал надзадача Эйлера проекта 14 и в качестве первой попытки я выбрал это грубое решение:

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

Мой вопрос об этой лямбде, яЯ обычно неохотно их использую, но я неНе знаю никакого элегантного способа избежать этого в этом случае. Есть ли что-то вfunctools или другой, чтобы связать два вызываемых, или любую другую аккуратную альтернативум отсутствует?

Ответы на вопрос(2)

Ваш ответ на вопрос