在python中如何循环直到状态保持不变

在python中如何循环直到状态保持不变,python,Python,我经常发现我想重复一段代码,直到某个状态停止改变。例如,假设rects是一个矩形列表,rect是一个单独的矩形,我们希望将rect与rects中的矩形合并,每次放大rect,直到没有重叠: stable=False 虽然不稳定: 稳定=真实 对于列表中的rect2(rects): 如果矩形重叠(矩形2): rect=rect.merge(rect2) rects.remove(rect2) 稳定=错误 在哈斯克尔,我们有一个自然的解决方案。在Python中实现这一点最自然的方法是什么?我想到了

我经常发现我想重复一段代码,直到某个状态停止改变。例如,假设
rects
是一个矩形列表,
rect
是一个单独的矩形,我们希望将
rect
rects
中的矩形合并,每次放大
rect
,直到没有重叠:

stable=False
虽然不稳定:
稳定=真实
对于列表中的rect2(rects):
如果矩形重叠(矩形2):
rect=rect.merge(rect2)
rects.remove(rect2)
稳定=错误
在哈斯克尔,我们有一个自然的解决方案。在Python中实现这一点最自然的方法是什么?我想到了这个:

类双表:
定义初始化(自):
self.\u stable=False
定义(自我):
虽然不是自我稳定的:
self.\u stable=True
屈服于自己
def已更改(自我):
self.\u stable=False
对于DoUntilStable()中的DU:
对于列表中的rect2(rects):
如果矩形重叠(矩形2):
dus.changed()
rect=rect.merge(rect2)
rects.remove(rect2)