更好的while循环结构在python中

时间:2017-01-26 18:20:27

标签: python loops

我有一个函数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

这对我来说也很奇怪。还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您的remove_it函数有副作用,这会使程序更难阅读。您可以重写它,以便它不会修改全局removed变量,而是返回一组已删除的值。然后你可以重写循环:

removed = set()

while True:
    removed_batch = remove_it()
    if removed_batch:
        removed += removed_batch
    else:
        break