islice:
from itertools import islice
def fib():
a, b = 0, 1
while True:
yield b
a, b = b, (a + b)
list(islice(fib(), 5))
# Результат: [1, 1, 2, 3, 5]
Если вы также хотите получить индексы элементов, можно применить
enumerate:
list(enumerate(islice(fib(), 5)))
# Результат: [(0, 1), (1, 1), (2, 2), (3, 3), (4, 5)]
Другой способ сделать это — использовать
zip и range, что может показаться более читаемым:
list(zip(range(5), fib()))
# Результат: [(0, 1), (1, 1), (2, 2), (3, 3), (4, 5)]
📲 Мы в MAX
👉@BookPython