python--迭代器
在Python中数据类型list、tuple、str、dict、set、f=open()、range()、enumerate均可通过for循环进行遍历,通过for循环的这种遍历就称为迭代
以上几种类型都是可迭代对象(Iterable)
协议:
含有__iter__函数就是可迭代的
含有__iter__函数和__next__函数就是迭代器
from collections.abc import Iterable from collections.abc import Iterator class A: def __iter__(self):pass #def __next__(self):pass a=A() print(isinstance(a,Iterable)) #判断a是不是迭代器 print(isinstance(a,Iterator)) #判断a是否可迭代
print(dir([])) #返回列表的内置方法 print("__iter__" in dir([])) #__iter__函数是否在列表的内置函数中 #返回True 说明是可迭代的,能用for进行遍历的 ret=[].__iter__() #返回迭代器 print(ret) #<list_iterator object at 0x00000151E2A48288> print(dir(ret)) #返回迭代器内置函数 #['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__length_hint__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__']
list1=[10,20,30] print(list1.__iter__().__length_hint__()) #返回迭代器中元素的个数 #3
list1=[10,40,30,20,50,90] print(list1.__iter__().__next__()) #返回迭代器中的下一个元素