我有以下代码在图顶点列表上运行宽度优先搜索(bfs)。如何在python for循环中跳过下一个迭代?
目前我有在列表中的每个项目上运行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
如果当前项目已存在于已发现节点集合中,是否存在不能简单地跳过当前迭代的原因? –
你能指出你想要跳过哪里(哪个循环)吗?也许添加一个条件,然后'#帮助 - 这里'? –