我有以下代碼在圖頂點列表上運行寬度優先搜索(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
如果當前項目已存在於已發現節點集合中,是否存在不能簡單地跳過當前迭代的原因? –
你能指出你想要跳過哪裏(哪個循環)嗎?也許添加一個條件,然後'#幫助 - 這裏'? –