我有一个函数remove_it()
尝试删除一些数据,删除的数据会添加到集removed
。主要逻辑是,如果有更多要删除,请继续删除,我的代码如下所示:
removed = set()
prev_count = -1
while prev_count != len(removed):
prev_count = len(removed)
remove_it()
让我感到困扰的是while
循环条件和下一行看起来非常相似。这是正常的还是有更好的方法呢?
remove_it()
中的逻辑非常复杂:它检测到一些图形结构拓扑,每次删除后拓扑发生变化,在删除完成之前我无法知道它是如何变化的。
我在考虑从remove_it()
返回bool值来跟踪集合removed
是否已更改。然后while循环就像
while remove_it():
pass
这对我来说也很奇怪。还有更好的方法吗?
答案 0 :(得分:2)
您的remove_it
函数有副作用,这会使程序更难阅读。您可以重写它,以便它不会修改全局removed
变量,而是返回一组已删除的值。然后你可以重写循环:
removed = set()
while True:
removed_batch = remove_it()
if removed_batch:
removed += removed_batch
else:
break