python-迭代器
定义:一个可以记住遍历位置的对象
1.判断是不是迭代器 和 迭代对象
1 #判断是不是迭代对象 2 from collections import Iterable 3 def test_fun(): 4 a='123' 5 b=[1,2,3] 6 c=12 7 print(isinstance(a,Iterable)) 8 print(isinstance(b,Iterable)) 9 print(isinstance(c, Iterable)) 10 11 if __name__=='__main__': 12 test_fun()
运行结果:True,True,False
1 from collections import Iterable,Iterator 2 def test_fun(): 3 a='123' 4 b=[1,2,3] 5 c=12 6 print(isinstance(a,Iterator)) 7 print(isinstance(b,Iterator)) 8 print(isinstance(c, Iterator)) 9 10 if __name__=='__main__': 11 test_fun()
运行结果 False,False,False
2.迭代器的两个方法 iter() 和next()
iter() 用于创建迭代器
next()用于访问迭代器中的下一个元素,一直取到没有了,那就会抛出”StopIteration” 异常
from collections import Iterable,Iterator def test_fun(): a='123' i1=iter(a) #创建一个迭代器 print(isinstance(i1,Iterator)) for i in i1: #使用for 循环去访问 print(i,end=' ') print(next(i1)) print(next(i1)) print(next(i1)) print(next(i1)) if __name__=='__main__': test_fun()
运行结果:
True
1 2 3
还抛出了一个异常 StopIteration
3.编码一个迭代器类
class it: def __iter__(self): self.a=1 return self def __next__(self): if self.a<=3: x=self.a self.a += 1 return x else: raise StopIteration if __name__=='__main__': myit=it() i=iter(myit) print(next(i)) print(next(i))
4. 斐波那契数列
class it: def __iter__(self): self.a=0 self.b=1 self.count=1 return self def __next__(self): self.a,self.b=self.b,self.count self.count = self.a+self.b if self.count <= 100: return self.count else: raise StopIteration if __name__=='__main__': myit=it() i=iter(myit) while True: try: print(next(i),end=' ') except StopIteration: break
输出结果:2 3 5 8 13 21 34 55 89
posted on 2021-03-03 16:41 kimber_kimber 阅读(50) 评论(0) 编辑 收藏 举报