python--class:迭代器(iter、next方法)

一、迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代!


二、重新理解:String、list、tuple、dict、set、scv,
其中,list类型的数据没有next()函数,只要先使用__iter()__函数再使用__next()__函数即遵循迭代器协议(解释:__iter__()函数即让数据遵循迭代器协议,生成可迭代对象)
另,for循环的本质:循环所有的对象,都是使用迭代器协议!

例举:
1.证明:list列表类型没有next()函数

2.证明:list()在使用_iter()_函数后,即:遵循迭代器协议,转换成可迭代对象,既可以使用_next()_函数

3.证明:next()函数在没有数据后,即会抛出异常:Stopiteration

4.解释for循环的强大机制

二、自己编写可以产生可迭代对象的类;

需要重写__iter__()、__next__()函数;

举例:


class Foo:
    def __init__(self,n):
        self.n=n

    def __iter__(self):
        return self

    def __next__(self):
        if self.n>20:
            raise StopIteration("完了")
        else:
            self.n+=1
            return self.n


f=Foo(10)
print(f.__next__())
print(f.__next__())
print(f.__next__())

举例:


class Foo1:
    def __init__(self,n):
        self.n=n

    def __iter__(self):
        return self

    def __next__(self):
        if len(self.n)>20:
            raise StopIteration("完了")
        else:
            self.n+="s"
            return self.n


f=Foo1("zhangsan")
print(f.__next__())
print(f.__next__())
print(f.__next__())

 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我会尽力回答你的问题。 首先,让我们来谈谈 Python 中的异常处理。在 Python 中,异常是程序在运行时遇到的错误或问题,它会导致程序停止运行并抛出一个异常。为了避免这种情况,我们可以使用 try/except 块来捕获并处理异常。例如: ``` try: # some code that might raise an exception except SomeException: # handle the exception ``` 其中,SomeException 是你想要捕获的异常类型。当代码运行到 try 块中的代码时,如果出现了 SomeException 异常,那么 except 块中的代码就会被执行。 接下来,让我们来谈谈 Python 中的对象。在 Python 中,一切都是对象,包括数字、字符串、函数等等。对象有一个类型,它定义了对象可以执行的操作。例如,数字类型可以执行加、减、乘等操作,字符串类型可以执行拼接、切片等操作。你也可以创建自己的对象,并定义它们的类型和操作。 最后,让我们来谈谈 Python 中的迭代器迭代器是一种对象,它可以让你逐个访问一个序列中的元素。Python 中的迭代器是通过 __iter__ 和 __next__ 方法实现的。__iter__ 方法返回一个迭代器对象,__next__ 方法返回序列中的下一个元素。例如: ``` class MyIterator: def __init__(self, data): self.data = data self.index = 0 def __iter__(self): return self def __next__(self): if self.index >= len(self.data): raise StopIteration result = self.data[self.index] self.index += 1 return result my_iter = MyIterator([1, 2, 3]) for item in my_iter: print(item) ``` 在上面的例子中,我们创建了一个名为 MyIterator 的迭代器对象。它有一个 data 属性,表示要迭代的序列,以及一个 index 属性,表示当前迭代的位置。__iter__ 方法返回 self,表示它本身就是一个迭代器对象。__next__ 方法返回序列中的下一个元素,并将 index 属性加 1。当迭代器遍历到序列末尾时,会抛出 StopIteration 异常,表示迭代结束。 希望这些信息能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值