如何在列表理解中将值与成对列表进行比较?

How to compare a value to a list of pairs in a list comprehension?

我需要创建一个 n 长的列表,其中每个项目都是布尔值。只有当 x 在一对或多对整数的范围内时,该项目才会为真。比如我现在的代码如下:

l = [True if a < x < b or c < x < d else False for x in range(n)]

我的问题是对的数量会有所不同,因此在一个实例中可能只存在 ab,但是 ef 也可以存在于另一个。如果我要像这样在元组列表中构建我的坐标对...

coordinates = [(a,b), (c,d), ...]

...有没有办法仍然将此作为列表理解来执行?如果不是,什么是最 pythonic 的方法?

是的,您可以在 any 中使用生成器表达式来完成此操作:

coordinates = [(2, 4), (3, 8)]
n = 5

l = [any(a < x < b for (a, b) in coordinates) for x in range(n)]

print(l)

Output:

[False, False, False, True, True]