美文网首页程序员哲思
24.Python可迭代对象

24.Python可迭代对象

作者: 赵明嗯 | 来源:发表于2020-07-28 21:58 被阅读0次

    前一篇讲了迭代器,但是迭代器还不能用于for循环进行迭代。今天这一篇文章通过在迭代器里加入__iter__方法,将其改造成可迭代对象。

    class A:
        def __init__(self):
            self.a=1
        def __next__(self):
            self.a+=self.a
            return self.a
        def __iter__(self):
            return self
    >>> its=A()
    >>> for i in its:
        print(i)
        if i>5:
            break   
    2
    4
    8
    

    由于__iter__方法被规定返回一个迭代器,这里我们使用它返回迭代器本身,来完成迭代过程。注意,这个可迭代对象应用到for循环中时,需要设定一个条件通过break跳出循环,不然会一直运行下去,因为这个可迭代对象是无穷的。
    下面的例子可以看出,未加入__iter__方法时,迭代器是不可迭代的。

    >>> class A:
        def __init__(self):
            self.a=1
        def __next__(self):
            self.a+=self.a
            return self.a
    >>> its=A()
    >>> for i in its:
        print(i)
        if i>5:
            break
    Traceback (most recent call last):
      File "<pyshell#21>", line 1, in <module>
        for i in its:
    TypeError: 'A' object is not iterable
    

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=h82m1wln20i9

    相关文章

      网友评论

        本文标题:24.Python可迭代对象

        本文链接:https://www.haomeiwen.com/subject/vywqrktx.html