迭代器的应用
1, 迭代器的优点
- 在python2中,range直接返回一个列表,一次性全部返回,占用大量的内存空间和时间
- 在python2中,xrange(10)会立刻返回,保存的是生成值的方式,占用极小内存空间
- 在python3中,range()直接替换了python2中的xrange(),占用极小内存空间,保存的是生成值的方式
2, 斐波那契数列实现
- 示例
# 斐波那契数列实现 a = 0 b = 1 l = [] l.append(a) l.append(b) for i in range(10): a, b = b, a + b l.append(a) print(l)
3, 迭代器实现斐波那契数列
- vim修改所有的全局变量
- :%/要修改的变量/修改后的值/g
- 并不是只有for循环可以接受可迭代对象,list,tuple也能接受,当进行类型转换的时候,重新生成一个新的列表或者元组,调用可迭代对象里面的__next__方法,取出里面的值,然后进行填充
class Febonacci(object): def __init__(self, num): self.num = num self.current_num = 0 self.a = 0 self.b = 1 pass def __iter__(self): # 该方法必须返回一个迭代器的对象 return self pass def __next__(self): if self.current_num < self.num: ret = self.a self.a, self.b = self.b, self.a + self.b self.current_num += 1 return ret else: # 不然会一直返回NOne raise StopIteration fibo = Febonacci(10) for i in fibo: print(i)