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
или другой, чтобы связать два вызываемых, или любую другую аккуратную альтернативум отсутствует?