在Ruby中,您可以在可枚举对象上调用Enumerable#any?,以查看其任何元素是否满足您在块中传递的谓词。像这样:
lst.any?{|e| pred(e) }
在Python中,有一个any
函数可以执行类似的操作,但是在布尔值列表中。
当然,对于一个合理大小的列表,我只会这样做:
any(map(pred,lst))
但是,如果我的列表很长,我不想首先进行整个map
操作。
所以,问题是:Python中是否存在泛型短路any
函数?
是的,我知道自己写一个是非常简单的,但我想使用快速内置函数(也不要重新发明任何轮子)。
答案 0 :(得分:21)
any(pred(x) for x in lst)
替代地
from itertools import imap
any(imap(pred, lst))