MyTetra Share
Делитесь знаниями!
Fibonacci
Время создания: 31.08.2017 21:02
Текстовые метки: knowledge
Раздел: Python - Задачник - Iterators
Запись: xintrea/mytetra_db_mcold/master/base/15034941587k0zzto4x1/text.html на raw.githubusercontent.com

Ну и, напоследок, давайте все-таки напишем свой собственный итератор (чуть было не дописал известную фразу Бендера)!

class Fibonacci: 
"""Итератор последовательности Фибоначчи до N""" 
  def __init__(self, N): 
    self.n, self.a, self.b, self.max = 0, 0, 1, N 
  def __iter__(self): 
    # сами себе итератор: в классе есть метод next() 
     return self 
  def next(self): 
     if self.n < self.max: 
       a, self.n, self.a, self.b = self.a, self.n+1, self.b, self.a+self.b 
       return a 
     else: 
       raise StopIteration 
# Использование: 
for i in Fibonacci(100): 
  print i,


Вот, собственно и вся основная теория. Если хотите узнать побольше тонкостей — читайте специальную литературу. Если есть какие-то замечания — буду рад выслушать :)

 
MyTetra Share v.0.59
Яндекс индекс цитирования