2010-02-24 71 views
7

在Ruby中,您可以在可枚举对象上调用Enumerable#any?以查看它的任何元素是否满足您在该块中传递的谓词。像这样:有没有Ruby的“任何?”的Python等价物?功能?

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

在Python中,有一个any功能,做类似的事情,但布尔的名单上。

当然,对于一个相当规模的名单,我只是做:

any(map(pred,lst)) 

但是,如果我的名单很长,我不希望有先做整个map操作。

所以,问题:是否有通用在Python中短路any函数?

是的,我知道写一个自己真的很微不足道,但我想使用快速内置函数(并且不会重新创建任何车轮)。

回答

21
any(pred(x) for x in lst) 

或者

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

哦,对了!生成器理解。谢谢! – perimosocordiae 2010-02-24 02:06:17

+1

@perimosocordiae:生成器表达式。 – 2010-02-24 02:19:10

相关问题