在日常使用中,列表的使用频率很高,元素数量少的时候还好,但要是有几百上千上万的数据都存在列表中会占用大量的内存,此时可以使用迭代器,将生成列表元素的代码放入迭代器中,在需要使用的时候再去生成元素,以生成斐波那契数列为例:
class Fibonacci(object):
def __init__(self,all_num):
self.all_num = all_num
self.current_num = 0
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
if self.current_num < self.all_num:
ret = self.a
self.a,self.b = self.b,self.a+self.b
self.current_num += 1
return ret
else:
raise StopIteration
fibo = Fibonacci(10) #生成10个数
for num in fibo:
print(num)