没有“全部”我可以传递一个lambda?

时间:2015-12-16 12:36:35

标签: python python-3.x

Python没有可以传递lambda的方法“all”?或者我错过了什么?我知道列表理解,但是这个怎么样?

 res = map(....., [True, False, False, ......very long])
 # how to check that all items in "res" are True using a functional approach?

是的,有办法检查,但没有功能方法?我想做点什么:

res2 = all(lambda x: x == True, res)

3 个答案:

答案 0 :(得分:1)

没有内置功能,但您可以通过mapall合作轻松自行编写:

def all_function(predicate, iterable):
    return all(map(predicate, iterable))

答案 1 :(得分:1)

不,没有<Button style="?android:attr/buttonStyleSmall" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button1" android:theme="@style/MyColorButton"/> 实现接受回调,因为可以使用生成器表达式表示相同。使用更复杂的“检查所有值是否超过5”示例以获得更好的样本:

all

这里没有特定的需要来提供res = map(..) if all(x > 5 for x in res): print('Yes!') 的替代实现,因为这种模式可以处理你想要的任何东西,而Python的咒语是有一个明显的方法可以做的东西。

答案 2 :(得分:0)

all(function(x) for x in res)是使用all()函数的正确方法,但如果您坚持使用“功能方式”,请尝试filter

list(filter(lambda x: x == True, res)) == res