如何在列表理解中将值与成对列表进行比较?
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)]
我的问题是对的数量会有所不同,因此在一个实例中可能只存在 a 和 b,但是 e 和 f 也可以存在于另一个。如果我要像这样在元组列表中构建我的坐标对...
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]
我需要创建一个 n 长的列表,其中每个项目都是布尔值。只有当 x 在一对或多对整数的范围内时,该项目才会为真。比如我现在的代码如下:
l = [True if a < x < b or c < x < d else False for x in range(n)]
我的问题是对的数量会有所不同,因此在一个实例中可能只存在 a 和 b,但是 e 和 f 也可以存在于另一个。如果我要像这样在元组列表中构建我的坐标对...
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]