Фибонначи на Питоне
Обожаю генераторы в Питоне.
Генераторы - это ленивые списки. Их элементы можно перебирать только один за другим, нельзя сразу прыгнуть на середину или получить срез. Генератор не помнит своих предыдущих элементов, он знает только текущее состояние и алгоритм, согласно которому будет получен новый элемент.
Генератор легко получить из функции. Вместо оператора return она должна иметь оператор yield - и тогда вызов функции вернет генератор. В качестве примера возьмем числа Фибонначи. Наша функция вернет генератор, при прохождению по которому мы получим бесконечно много чисел ряда.
def fib(a, b):
yield a
yield b
while True:
a, b = b, a + b
yield b
for x in fib(1, 2):
print x
if x > 100:
break
Код выведет числа 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144. Итерацию в данном примере нужно прерывать вручную, иначе уйдем в бесконечный цикл.
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter