私はグラフの頂点のリストで幅優先検索(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
現在のアイテムがすでに検出されたノードのセットに含まれている場合、現在の繰り返しをスキップできない理由はありますか? –
このスキップをどこで(どのループで)実行するかを指定できますか?条件付きで '#HELP - here'を追加してください。 –