我试图找出Python中是否有任何内置工具以any()和all()实现相同的方式工作,而不是检查每个元素是否真实或虚假,您可以传递自己的布尔评估函数或lambda,就像使用map()
函数一样。
所以我要问的是,如果有任何内置函数可以执行以下操作:
from random import randint
lst = [randint(1, 100) for _ in range(1000000)]
has_even = any(lambda x: not x % 2, lst)
或
has_even = any(has_even_fn, lst)
其中has_even_fn
是一个检查整数是否为偶数的函数。
您仍然可以使用any()
来检查lst
是否有平均值:
has_even = any([not x % 2 for x in lst])
但当然这是严格的O(n)
因为必须首先构建整个布尔列表,而我要求的函数在最坏的情况下只会是O(n)
,并且可能{{1在最好的情况下。
答案 0 :(得分:2)
正如评论中已经说明的那样,您只需删除// Output
Name: BA8842_530
Age: 0.0
Name: BA8842_540
Age: 20
...
即可获得延迟评估生成器表达式,而不是渴望列表理解:< / p>
[ ]
或
contains_one_or_more_even = any(x % 2 == 0 for x in lst)