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

per*_*iae 7 ruby python list

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

lst.any?{|e| pred(e) }
Run Code Online (Sandbox Code Playgroud)

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

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

any(map(pred,lst))
Run Code Online (Sandbox Code Playgroud)

但是,如果我的列表很长,我不希望map首先完成整个操作.

所以,问题是:Python中是否存在通用的短路any功能?

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

Joh*_*ooy 21

any(pred(x) for x in lst)
Run Code Online (Sandbox Code Playgroud)

或者

from itertools import imap
any(imap(pred, lst))
Run Code Online (Sandbox Code Playgroud)