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)