迭代器
迭代器 为什么要用迭代器 为什么不使用列表而使用迭代器,列表可以获取列表长度,然后使用变量i对列表索引进行循环,而且容器理解,也可以获取集合的所有元素。 没错,使用列表的代码是容易理解也很好操作,但这是要付出代价的。列表之所以可以用索引来快速定位其中的任何一个元素,是因为列表是一下子将所有的数据都装在在内存中, 而且是一块连续存在的空间。当数量比较小时,实现比较容易;当数据量大时,会非常消耗内存资源。而迭代就不同,迭代是读取多少元素,就讲多少元素装载到内存中。 实例: 在这个例子中定义了一个迭代器类(Fibonacci),用于无限迭代斐波那数列。 class Fibonacci: # 在构造方法中定义两个变量a和b,用来表示斐波那数列的最开始的两个值 def __init__(self): self.a=0 self.b=1 def __next__(self): # self.a就是当前要迭代的值 result=self.a #计算斐波那数列的下一个值,并将a变成原来的b,降b变成下一个值 self.a,self.b=self.b,self.a+self.b # 返回当前迭代的值 return result #该方法必须返回迭代器 def __iter__(self): return self fibs=Fibonacci() #对斐波那数列进行迭代 for fib in fibs: print(fib,end=" ") #迭代的值不能超过500 if fib > 500: break E:\python\python.exe E:/progect/untitled1/untitled1/urls.py 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610