1 什么是迭代器
拥有__iter__方法和__next__方法的对象就是迭代器
1 迭代
迭代是访问集合元素的一种方式,可以将某个数据集内的数据‘一个挨着一个的取出来’就叫做迭代
2 可迭代协议
协议就是相互规定好的。可是迭代协议的定义非常简单,就是内部实现了__iter__方法
3 迭代器协议 必须拥有__iter__方法和__next__方法
for 内容list str range()....
二 dir()方法获取对应数据类型的所有方法
g = ['a', 'b', 'c'].__iter__()
ret = g.__next__()
print(ret)
ret2 = g.__next__()
print(ret2)
ret3 = g.__next__()
print(ret3)
ret4 = g.__next__()
for循环原理 : 先判断lst是否迭代,调用__iter__(),返回迭代器,调用迭代器__next__方法, 返回值给i
class Names(object):
def __init__(self):
self.lst = []
def add_name(self, name):
self.lst.append(name)
def __iter__(self):
return NamesIterator(self.lst)
class NamesIterator(object):
def __init__(self, lst):
self.lst = lst
self.current_num = 0
def __iter__(self):
pass
def __next__(self):
if self.current_num < len(self.lst):
name = self.lst[self.current_num]
self.current_num += 1
return name
else:
raise StopIteration
names = Names()
names.add_name('zs')
names.add_name('ls')
names.add_name('ww')
# lst=[]
# lst.append('a')
# lst.append('b')
# lst.append('c')
# for i in lst:
# print(i)
import time
for name in names:
time.sleep(1)
print(name)