python是否有一个内置语句或函数来否定另一个函数?更具体的是:一个函数接受另一个函数fun (它返回布尔函数)并返回一个函数,该函数是fun的一个被否定的副本。
它的创建很简单:
def neg(fun):
def negfun(x):
return not fun(x)
return negfun示例用法:
In [1]: fun = lambda x: x < 3
In [2]: filter(fun, range(8))
Out[2]: [0, 1, 2]
In [3]: filter(neg(fun), range(8))
Out[3]: [3, 4, 5, 6, 7]也许这是一个糟糕的例子,想象一下过滤器函数已经存在于其他地方,并且您想要使用它。
我只是很惊讶我没能找到更简单的方法。有一个吗?
发布于 2017-07-30 22:36:15
您想要做的是用 operator编写fun
遗憾的是,python没有任何好的“组合”功能,因此您必须自己包装它:
def compose(f, g):
return lambda x: f(g(x))有了这个,你可以写:
import operator
def neg(func):
return compose(operator.not, fun)尽管如此,我发现阅读代码或简单地使用lambda要容易得多:
neg_func = lambda x: not fun(x)https://stackoverflow.com/questions/45405232
复制相似问题