1. 程式人生 > >叠代器&叠代對象&生成器

叠代器&叠代對象&生成器

通過 enc code __iter__ 元素 pytho __next__ erro com

叠代器 & 叠代對象 & 生成器

包含__next__ 和 __iter__兩個方法的對象為叠代器
__next__方法返回單個元素
__iter__方法返回叠代器本身

可叠代對象包含__iter__方法,每次都實例化一個新的叠代器

因此,叠代器可以叠代,但是可叠代對象不一定是叠代器

生成器是一種特殊的叠代器

import re
import reprlib

RE_WORD = re.compile(‘\w+‘)
class Sentence:

    def __init__(self, text):
        self.text = text
        self
.words = RE_WORD.findall(text) def __repr__(self): return ‘Sentence(%s)‘ % reprlib.repr(self.text) def __iter__(self): # <1> return SentenceIterator(self.words) # <2> class SentenceIterator: def __init__(self, words): self.words = words # <3>
self.index = 0 # <4> def __next__(self): try: word = self.words[self.index] # <5> except IndexError: raise StopIteration() # <6> self.index += 1 # <7> return word # <8> def __iter__(self): # <9>
return self

Sentence是一個可叠代對象,通過__iter__方法返回一個新的叠代器
SentenceIterator是一個叠代器,通過__iter__返回叠代器本身,每次調用__next__只返回一個值

叠代器&叠代對象&生成器