迭代器的原理: 大多數(shù)的容器都是可以用for來(lái)循環(huán)遍歷的,這種形式的訪問(wèn)清晰、簡(jiǎn)潔、方便。迭代器的用法在 Python 中普遍而且統(tǒng)一 迭代器由類來(lái)編寫(xiě)實(shí)現(xiàn)
迭代器的內(nèi)部工作原理? 第一. for語(yǔ)句在容器對(duì)象中調(diào)用iter()函數(shù) 第二. 該函數(shù)返回一個(gè)定義了 __next__()方法的迭代器對(duì)象,它在容器中逐一訪問(wèn)元素 第三. 沒(méi)有后續(xù)的元素時(shí), __next__() 拋出一個(gè) Stoplteration 異常通知 for 語(yǔ)句循環(huán)結(jié)束
我們自建一個(gè)迭代器看看!
class my_dl(object): """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.begin = -1 self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index -1 self.begin += 1 return self.data[self.begin] rev = my_dl('yai')
自建迭代器,從末尾開(kāi)始迭代呢?
class my_dl(object): """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index -1 return self.data[self.index] rev = my_dl('yai') iter(rev) for char in rev: print(char)
|
|