gpt4 book ai didi

python - 迭代python中不断增长的集合

转载 作者:行者123 更新时间:2023-11-28 19:55:22 28 4
gpt4 key购买 nike

我有一个集合,setOfManyElements,它包含 n 个元素。我需要遍历所有这些元素并对 S 的每个元素运行一个函数:

for s in setOfManyElements:
elementsFound=EvilFunction(s)
setOfManyElements|=elementsFound

EvilFunction(s) 返回它找到的元素集。其中一些已经在 S 中,一些是新的,还有一些在 S 中并且已经过测试。

问题是每次我运行 EvilFunction 时,S 都会扩展(直到达到最大集合,此时它将停止增长)。所以我基本上是在迭代一个不断增长的集合。此外,EvilFunction 需要很长时间来计算,因此您不希望对同一数据运行两次。

在 Python 2.7 中有解决这个问题的有效方法吗?

后期编辑:更改了变量的名称,使它们更易于理解。谢谢建议

最佳答案

我建议使用 6502 方法的增量版本:

seen   = set(initial_items)
active = set(initial_items)

while active:
next_active = set()
for item in active:
for result in evil_func(item):
if result not in seen:
seen.add(result)
next_active.add(result)
active = next_active

这只访问每个项目一次,完成后 seen 包含所有访问过的项目。

进一步研究:这是广度优先图搜索。

关于python - 迭代python中不断增长的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584470/

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