-1

我尝试定义一个尽可能短的函数,如果函数test始终为真,则返回 True,如果有某个值为假,则返回假。我试过这样:

def res(v): for d in List: return True if v.test(d) else: pass

这没用。如何定义这样的功能?

我只想在一行上定义它。


4

2 回答 2

8

关于什么:

res = lambda x: all(test(v) for v in x) 

或者

res = lambda x: all(map(test, x))

正如弗拉基米尔在评论中提到的那样,你test实际上是一个名为的对象的方法v,所以它实际上应该是:

lambda v: all(map(v.test, List)) # You should not use List as a variable name!

不过,您可能也想将 theList作为参数传递。


查看方法文档,all方法函数文档。maplambda

于 2012-12-05T14:49:47.327 回答
1

这更接近你想要的:

def res(v, values):
    return all(v.test(d) for d in values)

这也可以:

def res(v, values):
    return filter(v.test, values) == values

如上所述,不要命名你的变量list

于 2012-12-05T15:54:11.343 回答