Fibonacci數列,數列中第一個數為0,第二個數為1,其後的每一個數都可由前兩個數相加得到:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
class FibIterator(object):
"""斐波那契數列疊代器"""
def __init__(self, n):
"""
:param n: int, 指明生成數列的前n個數
"""
self.n = n
# current用來儲存目前生成到數列中的第幾個數了
self.current = 0
# num1用來儲存前前一個數,初始值為數列中的第一個數0
self.num1 = 0
# num2用來儲存前一個數,初始值為數列中的第二個數1
self.num2 = 1
def __next__(self):
"""被next()函數調用來擷取下一個數"""
if self.current < self.n:
num = self.num1
self.num1, self.num2 = self.num2, self.num1+self.num2
self.current += 1
return num
else:
raise StopIteration
def __iter__(self):
"""疊代器的__iter__傳回自身即可"""
return self
if __name__ == '__main__':
fib = FibIterator(10)
for num in fib:
print(num, end=" ")