All is well 3 idiots

AC小小常

【Python面向对象】(10) 迭代器

一、介绍

  1. 迭代意味着多次重复,如同循环(list,tuple

  2. 实现了__iter__的对象是可迭代的,而实现了方法__next__的对象是迭代器

  3. 调用__next__(或next()),迭代器返回下一个值

  4. 如果迭代器没有可供返回的值,触发StopIteration异常

二、迭代器创建序列

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

    lst = [1, 2, 3, 4, 5]

    lst2 = iter(lst)

    lst2.__next__

    next(lst2)

三、举例

"""
迭代器
"""


class PowNumber(object):
    """ 输出1-10的平方 """
    value = 0

    def __iter__(self):
        return self

    def __next__(self):
        # 每迭代一次value值加1
        self.value += 1
        # 当value值达到10后停止迭代
        if self.value > 10:
            raise StopIteration
        # 返回每一个迭代值的平方
        return self.value * self.value


if __name__ == "__main__":
    pow = PowNumber()
    # 1. 第一种方法:__next__
    print(pow.__next__())  # 输出:1
    print(pow.__next__())  # 输出:4
    print(pow.__next__())  # 输出:9
    # 2. 第二种方法:next()
    print(next(pow))  # 输出:16
    print(next(pow))  # 输出:25
    print(next(pow))  # 输出:36
    # 3. 第三种方法:循环迭代
    for i in pow:
        print(i)
    # 输出:
    # 49
    # 64
    # 81
    # 100

 

posted on 2020-04-15 20:06  AC小小常  阅读(196)  评论(0编辑  收藏  举报

导航