非凡 发表于 2021-8-26 02:30:47

迭代器相关问题

我这代码为什么会无限循环呢?
class MyRev:
    def __init__(self,myrev):
      self.myrev = myrev
      self.a = ''
      self.b = ''
    def __iter__(self):
      return self
    def __next__(self):
      for i in self.myrev:
            self.a = i+self.b
            self.b = self.a

      return self.a


myRev = MyRev("FishC")
for i in myRev:
    print(i, end='')



suchocolate 发表于 2021-8-26 08:11:15

本帖最后由 suchocolate 于 2021-8-26 08:47 编辑

缺raise StopIterationclass MyRev:
    def __init__(self, string):
      self.string = string
      self.n = len(string)

    def __iter__(self):
      return self

    def __next__(self):
      self.n -= 1
      if self.n < 0:
            raise StopIteration
      return self.string


myRev = MyRev("FishC")
for i in myRev:
    print(i, end='')

非凡 发表于 2021-8-26 10:16:16

suchocolate 发表于 2021-8-26 08:11
缺raise StopIteration

不是说当没有数据时抛出StopIteration错误?
怎么这是要自己在类里面定义的吗{:9_239:}

suchocolate 发表于 2021-8-26 16:30:08

非凡 发表于 2021-8-26 10:16
不是说当没有数据时抛出StopIteration错误?
怎么这是要自己在类里面定义的吗

要自己定义的
页: [1]
查看完整版本: 迭代器相关问题