【发布时间】:2017-02-02 16:46:09
【问题描述】:
我有以下代码在图形顶点列表上运行广度优先搜索 (bfs)。
目前我有代码在列表中的每个项目上运行 bfs,但我想这样做,如果 for 循环中的下一个项目已经在发现的节点集中,那么 for 循环应该跳过它,因此不必对每个顶点执行 bfs。
我这样做的主要原因是因为我必须读取一个非常大的文件,所以当我对每个顶点执行 bfs 时会导致内存崩溃;我的代码适用于小测试用例,但不适用于大文件。
我知道 continue 语句允许您跳过当前迭代,但我不知道如何跳过下一个迭代。
感谢任何帮助;谢谢你。
def count_components(g):
dictionary = {}
dict_list = {}
for i in g.vertices():
dictionary = breadth_first_search(g,i)
dictionary_keys = list(dictionary.keys())
dict_list[i] = dictionary_keys
for value in dict_list.values():
for i in range(len(value)):
value[i] = str(value[i])
result = {}
for key, value in dict_list.items():
dict_list[key].sort(key=str.lower)
if value not in result.values():
result[key] = value
count = len(result)
return count
【问题讨论】:
-
如果当前项目已经在发现的节点集中,是否有理由不能简单地跳过当前迭代?
-
你能指出你希望这个跳过发生在哪里(哪个循环)?也许添加一个条件然后
# HELP - here?
标签: python