1 from collections.abc import Iterable 2 3 ''' 4 迭代器的作用,通过迭代器生成需要的数据,而不是事先放进一个列表里存储,节省大量内存空间 5 ''' 6 7 # 比如想要从1到1000的数字,不是提前准备一个列表,而是需要的时候临时用xrange(1000)生成 8 # xrange he range 已经合并了,现在range已经是一个迭代器了 9 a = range(10) 10 # help(a) 11 12 ''' 13 斐波那契数列的for循环实现 14 ''' 15 # b = 0 16 # c = 1 17 # for x in range(20): 18 # print(b, end=' ') 19 # b, c = c, c + b 20 21 ''' 22 用类实现 23 ''' 24 class Fobonaqi(object): 25 26 def __init__(self, all_num): 27 self.a = 0 28 self.b = 1 29 self.all_num = all_num 30 self.c = 0 31 32 def __iter__(self): 33 return self 34 35 def __next__(self): 36 if self.c <= self.all_num: 37 ret = self.a 38 self.a ,self.b = self.b, self.a + self.b 39 self.c += 1 40 return ret 41 else: 42 raise StopIteration 43 feibo = Fobonaqi(20) 44 f = list(feibo) #list先生成一个空列表,然后去feibo里面找—__iter__,再去调用__next__方法将数据一个个放进空列表中 45 print(a) 46 47 for x in f: 48 print(x)