有没有Ruby的“任何?”的Python等价物?功能?
问题描述:
在Ruby中,您可以在可枚举对象上调用Enumerable#any?以查看它的任何元素是否满足您在该块中传递的谓词。像这样:有没有Ruby的“任何?”的Python等价物?功能?
lst.any?{|e| pred(e) }
在Python中,有一个any
功能,做类似的事情,但布尔的名单上。
当然,对于一个相当规模的名单,我只是做:
any(map(pred,lst))
但是,如果我的名单很长,我不希望有先做整个map
操作。
所以,问题:是否有通用在Python中短路any
函数?
是的,我知道写一个自己真的很微不足道,但我想使用快速内置函数(并且不会重新创建任何车轮)。
答
any(pred(x) for x in lst)
或者
from itertools import imap
any(imap(pred, lst))
哦,对了!生成器理解。谢谢! – perimosocordiae 2010-02-24 02:06:17
@perimosocordiae:生成器表达式。 – 2010-02-24 02:19:10