Skip to main content
 首页 » 编程设计

python之python中更好的while循环结构

2024年10月01日7soundcode

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

这对我来说也很奇怪。有没有更好的办法?

请您参考如下方法:

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

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