前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >24.Python可迭代对象

24.Python可迭代对象

作者头像
用户4381798
修改2023-09-23 14:18:56
3830
修改2023-09-23 14:18:56
举报

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

代码语言:javascript
复制
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__方法时,迭代器是不可迭代的。

代码语言:javascript
复制
>>> 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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档