标签:highlight 定义 ini 一个 img 迭代 info nbsp int
1.迭代器:通过iter()方法获得了list的迭代对象,然后就可以通过next()方法来访问list中的元素了,当容器中没有可访问元素时,会抛出StopIteration异常终止迭代器
data = [1,2,3,4,5] itr = iter(data) print(itr.__next__())
2.自定义迭代器:需要实现__iter__,__next__方法
class CustomRange: def _init__(self, length): self.inx = 0 self.length = length def __iter__(self): return self def __next__(self): if self.inx < self.length: val = self.idx self.idx += 2 return val else: raise StopIteration if __name__ == "__main__": cr = CustomRange(20) print(next(cr)) print(next(cr))
3.生成器,yield
4.生成器与迭代器的区别:
> 通过实现迭代器协议对应的__iter__()和__next__()方法,可以自定义迭代器。对于可迭代对象,for语句可以通过iter()方法获取迭代器,并且通过next方法获取容器的下一个元素
> 生成器是一种特殊的迭代器,内部支持了生成器协议,不需要明确定义__iter__()和__next__()方法
> 生成器通过生成器函数产生,生成器函数可以通过常规的def来定义,但是不用return返回,而是用yield一次返回一个结果
标签:highlight 定义 ini 一个 img 迭代 info nbsp int
原文地址:https://www.cnblogs.com/n-n5980/p/12089497.html