我在一个脚本列表中搜索,在每个脚本中,我都在解析它,并且在其他事情中,找到下标。你知道吗
每当我找到一个下标,我就想把它添加到我正在搜索的脚本列表中。你知道吗
我想出了这个while循环:
while keep_checking == True:
TMP = deepcopy(FILE_LIST)
for fname in TMP:
if not fname in processed:
SCL_FILE = fname
break
handleSCL(SCL_FILE)
processed.add(SCL_FILE)
if processed == FILE_LIST:
keep_checking = False
break
上面的代码完成了这项工作,但我觉得dirty. handleSCL()
正在搜索文件并向FILE_LIST
添加任何新的下标。你知道吗
有没有更干净的方法?你知道吗
你的循环需要清理!你知道吗
break
将跳出while循环,无需继续检查。也不需要TMP,直接在for循环中使用它。你知道吗将在更少的代码中完成相同的工作。你知道吗
经过深思熟虑,我最终编写了一个快速自定义队列。你知道吗
这使我能够处理几个特殊条件(使用所有的\文件和cur\文件)以及init标志。我们在任何时候最多只能处理几百个文件,所以我不担心大小限制。你知道吗
我将使用类似于a*寻路算法的方法(只是没有寻路部分)。你知道吗
放置尚未检查的文件。你知道吗放置已检查的文件。你知道吗首先将第一个文件添加到openlist;然后遍历openlist中的每个元素。对于每个元素,查找所有文件,对于每个新文件,检查它是否在任一列表中。如果两者都不在,则将其添加到openlist。完成元素后,将其添加到closedlist。你知道吗
这是一种非常有效和干净的方法,可以不重复地遍历所有元素。你知道吗
编辑:在进一步考虑之后,您可以使用一个有序的列表,并遍历它,将新文件添加到列表的末尾。[当前开始]是关闭列表,[当前结束]是打开列表。由于排序和路径开销的计算,A*需要两个列表,但您正在执行完全搜索,因此不需要该功能。然后您只需要为单个列表添加一个“addif not exist”。你知道吗
相关问题 更多 >
编程相关推荐