我尝试将函数定义为尽可能短,并且如果test
始终为true则返回True的函数,如果有某些值为false则返回false。我试过了:
def res(v): for d in List: return True if v.test(d) else: pass
它不起作用。如何定义这样的函数?
我想只在一行上定义它。
答案 0 :(得分:8)
怎么样:
res = lambda x: all(test(v) for v in x)
或者
res = lambda x: all(map(test, x))
正如Vladimir在评论中提到的那样,test
实际上是一个名为v
的对象的方法,所以它应该是:
lambda v: all(map(v.test, List)) # You should not use List as a variable name!
您可能希望将List
作为参数传递。
查看documentation for the all
method,one for the map
method和lambda
functions。
答案 1 :(得分: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
命名。