有没有Python相当于Ruby的'any?'功能?

时间:2010-02-24 01:58:11

标签: python ruby list

在Ruby中,您可以在可枚举对象上调用Enumerable#any?,以查看其任何元素是否满足您在块中传递的谓词。像这样:

lst.any?{|e| pred(e) }

在Python中,有一个any函数可以执行类似的操作,但是在布尔值列表中。

当然,对于一个合理大小的列表,我只会这样做:

any(map(pred,lst))

但是,如果我的列表很长,我不想首先进行整个map操作。

所以,问题是:Python中是否存在泛型短路any函数?

是的,我知道自己写一个是非常简单的,但我想使用快速内置函数(也不要重新发明任何轮子)。

1 个答案:

答案 0 :(得分:21)

any(pred(x) for x in lst)

替代地

from itertools import imap
any(imap(pred, lst))