gpt4 book ai didi

python - 如何在 python 的 for 循环中跳过下一次迭代?

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:26 27 4
gpt4 key购买 nike

我有以下代码在图顶点列表上运行广度优先搜索 (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

最佳答案

两个选项,您可以选择:

1) 用保护子句开始你的循环。这使您可以调用 continue 并跳过该循环迭代。

>>> values = [0,1,2,1,0]
>>> known = set([2])
>>> for i in values:
... if i in known:
... continue
... print i
... known.add(i)
...
0
1

2) 在for语句中使用生成器:

>>> values = [0,1,2,1,0]
>>> known = set([2])
>>> for i in (x for x in values if not x in known):
... print i
... known.add(i)
...
0
1

哪个最好,由您决定。

关于python - 如何在 python 的 for 循环中跳过下一次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42007767/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com