Python 中的迭代器通常是指實(shí)現(xiàn)了__iter__
和__next__
方法的對(duì)象。在 Python 中,可以通過next()
函數(shù)來調(diào)用迭代器的__next__()
方法,從而遍歷迭代器返回的元素。
class MyIterator: def __init__(self, start, end): self.current = start self.end = end def __iter__(self): return self def __next__(self): if self.current< self.end: result = self.current self.current += 1 return result else: raise StopIteration my_iterator = MyIterator(0, 5) # 遍歷迭代器 while True: try: print(next(my_iterator)) except StopIteration: break
在這個(gè)例子中,我們定義了一個(gè)MyIterator
類,實(shí)現(xiàn)了__iter__()
和__next__()
方法。在__init__()
方法里,我們初始化了當(dāng)前值和結(jié)束值。在__iter__()
方法中,我們返回了自身,使得MyIterator
對(duì)象可以被迭代。在__next__()
方法中,我們判斷當(dāng)前值是否小于結(jié)束值,如果是,就返回當(dāng)前值并將當(dāng)前值加 1;否則,就拋出一個(gè)StopIteration
異常,表示迭代結(jié)束。
在主程序中,我們用MyIterator(0, 5)
創(chuàng)建了一個(gè)迭代器對(duì)象,并使用while
循環(huán)遍歷了它返回的所有元素,直到遇到StopIteration
異常。
事實(shí)上,Python 中的很多數(shù)據(jù)結(jié)構(gòu)都是迭代器。比如,list
、tuple
、set
、dict
等。這意味著我們可以直接使用for
循環(huán)來遍歷它們:
my_list = [0, 1, 2, 3, 4] # 遍歷列表 for element in my_list: print(element)
在這個(gè)例子中,我們定義了一個(gè)列表my_list
,并使用for
循環(huán)遍歷了它返回的所有元素。
總之,迭代器是 Python 中非常常見的概念。熟練掌握迭代器的使用,可以使我們的代碼更加簡(jiǎn)潔、高效。