和()以及任何具有自定义条件的()

时间:2016-12-19 14:12:53

标签: python

我试图找出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在最好的情况下。

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)