Вот фрагмент кода Python для генерации последовательности Фибоначчи в одну строку:
fibonacci = lambda n: reduce(lambda x, _: x + [x[-1] + x[-2]], range(n - 2), [0, 1])
Этот код использует функцию reduce
из модуля functools
для генерации последовательности Фибоначчи до заданного значения n
. Предоставляются начальные значения [0, 1]
, и для каждой итерации лямбда-функция добавляет в список сумму двух последних элементов. Результатом является список, содержащий последовательность Фибоначчи.
В качестве альтернативы вы можете использовать выражение-генератор для достижения того же результата:
fibonacci = lambda n: list(islice(((lambda a, b: lambda: (a, a := b, b := a + b))() for _ in range(n)), n))
В этом коде последовательность Фибоначчи генерируется с использованием выражения-генератора вместе с функцией islice
из модуля itertools
. Лямбда-функция внутри выражения-генератора поддерживает состояние последовательности Фибоначчи и возвращает каждое значение.