2010-02-24 70 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

相關問題