python-迭代器
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- ''' Iterator:可以被next()函数调用,并不断返回下一个值的对象叫做迭代器 特性:1-迭代器的长度是未知的 2-迭代器是惰性计算的(和生成器差不多),只有需要返回下一个数据时才会计算 3-基于惰性计算的特性,Itertor中数据流可以是无限大的 Iterable:指可以直接作用于for循环的对象叫做可迭代对象 ''' # ----------Iterable---------- from collections import Iterable # isinstance(self,Iterable)方法:查看一个元素是否是可迭代对象 print(isinstance([],Iterable)) print(isinstance('abc',Iterable)) print(isinstance({},Iterable)) print(isinstance(100,Iterable)) # ----------Iterator---------- from collections import Iterator # isinstance(self,Iterator)方法:查看一个元素是否是迭代器 print(isinstance((x for x in range(1,10)),Iterator)) # 生成器本身就是迭代器,反之不一定 print(isinstance([1,2,3,4],Iterator)) print(isinstance({'a':1,'b':2},Iterator)) # ----------Iter---------- # list, string, dict等虽然是可迭代对象(Iterable),但却不是迭代器(Iterator) # 但可以使用Iter函数将Iterable变成Iterator print(isinstance(iter([1,2,3,4]),Iterator)) # ----------迭代器的遍历---------- for x in range(1,5): print(x) # 等价于: it = iter([1,2,3,4]) # 获得一个迭代器 while True: try: print(next(it)) except StopIteration: break