在iterationRuntimeError期间设置更改的大小

2024-10-04 03:26:23 发布

您现在位置:Python中文网/ 问答频道 /正文

   for sentence in self.knowledge:
       ...
       else:
              safes=sentence.known_safes()
              if(safes!=None):
                  for safe in safes:
                      self.mark_safe(safe)

知识是一个类句子的对象列表,其中每个对象都有一组单元格和相应的计数

我收到运行时错误RuntimeError:在迭代期间设置更改的大小

这就是众所周知的_保险箱的样子:

def known_safes(self):
    if self.count == 0:
        return self.cells

这是句子类的功能标记_safe:

def mark_safe(self, cell):
    if(cell in self.cells):
       self.cells.discard(cell)

这是扫雷艇类的功能标志(u safe):

def mark_safe(self, cell):
    """
    Marks a cell as safe, and updates all knowledge
    to mark that cell as safe as well.
    """
    self.safes.add(cell)
    for sentence in self.knowledge:
        sentence.mark_safe(cell)

另外,我知道在python中迭代集合时不能更改集合。但是在java中,我们总是在循环中修改数组。迭代对象时不操作对象背后的逻辑是什么


Tags: 对象inselfforifdefascell