我有一个集合,叫做setOfManyElements,其中包含n个元素。我需要遍历所有这些元素并对S的每个元素运行一个函数:
EvilFunction(s)返回它找到的元素集。其中一些已经在S中,一些是新的,并且一些在S中并且已经被测试过。
问题在于每次运行EvilFunction,S都会扩展(直到达到最大集合为止)。因此,我本质上是在迭代一个不断增长的集合。此外,EvilFunction需要很长时间来计算,因此您不希望在相同的数据上运行两次。
有没有一种有效的方法来解决Python 2.7中的这个问题?
最后修改:更改变量名称以使其更易于理解。感谢建议。
for s in setOfManyElements:
elementsFound=EvilFunction(s)
setOfManyElements|=elementsFound
EvilFunction(s)返回它找到的元素集。其中一些已经在S中,一些是新的,并且一些在S中并且已经被测试过。
问题在于每次运行EvilFunction,S都会扩展(直到达到最大集合为止)。因此,我本质上是在迭代一个不断增长的集合。此外,EvilFunction需要很长时间来计算,因此您不希望在相同的数据上运行两次。
有没有一种有效的方法来解决Python 2.7中的这个问题?
最后修改:更改变量名称以使其更易于理解。感谢建议。
EvilFunction
进行一些控制?能否让它返回被添加到集合中的元素?那个集合有多大?你能否保留一个已访问元素的集合? - tobias_ks
和S
之间的区别。顺便说一下,普通变量名应该是小写的,以大写字母开头的名称应该用于类(全局常量则全部使用大写字母)。 - PM 2RingEvilFunction(s)
返回的对象。EvilFunction(s)
修改了小s
还是大S
的内容?一般来说,不应该修改正在迭代的容器。如果你小心,它可能会工作,但这会使代码更难阅读和调试。 - PM 2Ring