3 回答

TA贡献1810条经验 获得超4个赞
一种方法是使用嵌套列表理解
data = [[0, 1], [0, 1], [1, 2], [1, 5], [5, 10], [11, 20]]
check = [2, 4, 6, 9]
result = [any(1 if l <= y <= r else 0 for y in check) for l, r in data]
# [False, False, True, True, True, False]
如果您想要 0 或 1,您可以使用以下
result = [max(1 if l <= y <= r else 0 for y in check) for l, r in data]
# [0, 0, 1, 1, 1, 0]

TA贡献1802条经验 获得超5个赞
由于您的范围是隐式排序的,您可以简单地检查您的数字是否在开始元素和停止元素之间:
for each element, e, in your input vector:
for each range pair (low, high) in your interval matrix:
if low <= e <= high; then
true
else
false
在 Python 中:
def check_within_range(arr, mat):
return [[low <= e <= high for e in arr] for (low, high) in mat]

TA贡献1799条经验 获得超8个赞
这应该返回一个布尔值矩阵(可以很容易地将其视为 1 和 0)。希望这是您想要实现的目标。
# m is the matrix
# a is the array
result = [[y in range(x[0], x[-1]) for y in a] for x in m]
添加回答
举报