迭代器

  • 迭代(iterate)意味着重复多次,就像循环那样(list, tuple)。
    • 列表、字典、元组均为可迭代对象;可以直接作用于for......in......循环的数据类型都被称为可迭代对象,使用iter()方法把可迭代对象转换成迭代器。
  • 实现了方法__iter__的对象是可迭代的,而实现了方法__next__的对象是迭代器。
    • 任何实现了__iter__()和__next__()方法的对象都是迭代器。
  • 调用方法__next__时(或next()),迭代器返回其下一个值。
  • 如果迭代器没有可供返回的值,触发Stoplteration异常。
  • 迭代器一定是可迭代对象,但是,可迭代对象不一定是迭代器。

从迭代器创建序列

通过对可迭代对象调用内置函数iter,可获得一个迭代器

举例:

class PowNumber(object):
    """
    迭代器
    生成1,2,3,4,5,.... 数的平方
    """
    value = 0

    def __next__(self):
        self.value += 1
        if self.value > 10:
            raise StopIteration
        return self.value * self.value

    def __iter__(self):
        return self


if __name__ == '__main__':
    pow = PowNumber()
    # print(pow.__next__())
    # print(pow.__next__())
    # print(pow.__next__())
    print(next(pow))
    print(next(pow))
    print(next(pow))
    # 循环迭代器
    for i in pow:
        print(i)

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧