Dãy Fibonacci bắt đầu 0, 1, số sau bằng tổng hai số trước. Bài viết minh họa tạo dãy Fibonacci n phần tử bằng hàm lambda.
Cách 1: sum() và map()
Dùng map(lambda _: listA.append(sum(listA[-2:])), range(2, count)) để mở rộng list.
def fibonacci(count):
listA = [0, 1]
any(map(lambda _: listA.append(sum(listA[-2:])), range(2, count)))
return listA[:count]
print(fibonacci(8)) # [0, 1, 1, 2, 3, 5, 8, 13]
Cách 2: reduce()
Dùng functools.reduce với lambda cộng hai phần tử cuối.
from functools import reduce fib_numbers = lambda y: reduce(lambda x, _: x + [x[-1] + x[-2]], range(y-2), [0, 1]) print(fib_numbers(8)) # [0, 1, 1, 2, 3, 5, 8, 13]