Python:检查列表中至少有两个值满足条件

Python: Checking at least two values in a list satisfy a condition

我在 Python 中创建了一个列表,类似于 a=[1.0,3.7,1.0,3.9]。 我需要用 if 检查一个条件,列表中至少有两个值的值在 [3.0,4.0] 范围内,然后做一些事情。

if sum(1 for e in a if 3.0 <= e < 4.0) >= 2:
    something()

1 for e in a if 3.0 <= e < 4.0 将 return 迭代器 (1, 1) (即每个 e 的值 1 使得它在 3.04.0);然后对这些求和得到满足条件的元素数。

will this early exit when the list a is very long?

没有。这会的,不过,它使逻辑有点复杂:

from itertools import accumulate
if any(n for n in accumulate(1 for e in a if 3.0 <= e < 4.0) if n >= 2):
    something()