首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >否定函数(函数)

否定函数(函数)
EN

Stack Overflow用户
提问于 2017-07-30 22:14:36
回答 1查看 848关注 0票数 4

python是否有一个内置语句或函数来否定另一个函数?更具体的是:一个函数接受另一个函数fun (它返回布尔函数)并返回一个函数,该函数是fun的一个被否定的副本。

它的创建很简单:

代码语言:javascript
复制
def neg(fun):
    def negfun(x):
        return not fun(x)
    return negfun

示例用法:

代码语言:javascript
复制
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]

也许这是一个糟糕的例子,想象一下过滤器函数已经存在于其他地方,并且您想要使用它。

我只是很惊讶我没能找到更简单的方法。有一个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-30 22:36:15

您想要做的是用 operator编写fun

遗憾的是,python没有任何好的“组合”功能,因此您必须自己包装它:

代码语言:javascript
复制
def compose(f, g):
    return lambda x: f(g(x))

有了这个,你可以写:

代码语言:javascript
复制
import operator

def neg(func):
    return compose(operator.not, fun)

尽管如此,我发现阅读代码或简单地使用lambda要容易得多:

代码语言:javascript
复制
neg_func = lambda x: not fun(x)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45405232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档