具体解释了怎么用迭代,怎样用迭代,怎样转换成迭代,可以看看
- 列表,字典,元组,字符串,集合可以使用迭代
- 自定义类中可以定义iter方法,来使用迭代
- iter方法意为可以迭代
- iterator意为定义迭代的对象(既有__iter__方法,也有__next__方法)
(一)
from collections.abc import Iterable
from collections.abc import Iteratorimport time
class Person(object):def __init__(self):self.names = list()self.current_num = 0def add_person(self,name):self.names.append(name)def __iter__(self):#passreturn PersonsIterator(self)class PersonsIterator(object):def __init__(self,obj):self.obj = objself.current_num = 0def __iter__(self):passdef __next__(self):#pass#return 12345if self.current_num p1.add_person('张三')
p1.add_person('李四')
p1.add_person('王五')p_iter = iter(p1)
while True:try:ret = next(p_iter)print(ret)except Exception:break
运行结果:

(二)
from collections.abc import Iterable
from collections.abc import Iteratorimport time
class Person(object):def __init__(self):self.names = list()self.current_num = 0def add_person(self,name):self.names.append(name)def __iter__(self):#passreturn PersonsIterator(self)class PersonsIterator(object):def __init__(self,obj):self.obj = objself.current_num = 0def __iter__(self):passdef __next__(self):#pass#return 12345if self.current_num p1.add_person('张三')
p1.add_person('李四')
p1.add_person('王五')print(isinstance(p1,Iterable)) #判断是否可以迭代
# iter()的作用是调用p1的iter()方法
# next()的作用是调用迭代器的next方法
p_Iterator = iter(p1)
print(isinstance(p_Iterator,Iterator)) #判断是否为迭代器for temp in p1:print(temp)time.sleep(1)
运行结果:
