python - 搜索算法但针对函数

标签 python algorithm

给定一个输入列表(假设它们只是整数)和一个函数列表(这些函数接受一个整数,并返回 True 或 False)。

我必须获取这个输入列表,并查看列表中的任何函数是否会为列表中的任何值返回 True。

有什么方法可以比 O(n^2) 更快

我现在有的是

for v in values:
    for f in functions:
        if f(v):
            # do something to v
            break

有什么更快的方法吗?

最佳答案

没有关于函数的任何进一步信息,len(functions) * len(values) 可能的函数调用的结果必须被认为是相互独立的,所以没有比检查更快的方法他们都是。

不过,您可以将其写得更简洁一些:

any(f(v) for v in values for f in functions)

内置函数 any() 也会短路,就像您的原始代码一样。

编辑:事实证明,所需的等价物是

all(any(f(v) for f in functions) for v in values)

查看评论以进行讨论。

关于python - 搜索算法但针对函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10737986/

相关文章:

python - 用于测试字符串的可能值的有限调色板的正则表达式?

python - 使用Python 2.7打印字符串变量中的颜色字符

python - 推广 PyQt 小部件

python - 使用 Cactus App for Mac 设置全局变量

algorithm - 计算两组k维向量最小距离的快速方法

python - ClamAV 和 Python

algorithm - Terra 压缩是否可行?如果是,请解释并提供 sample

algorithm - 带快速插入的矩形的空间索引

c++ - std::inner_product 计算 vector 的标准差

algorithm - 这不就是解决0-1背包问题的一种正确但非常高效简单的方法吗?