Python 搜索包含值的边界?

Python 搜索包含值的边界?,python,search,Python,Search,我有大量的边界(两个数字定义了一个最小和最大范围),我需要一个有效的方法来查找包含我正在搜索的值的每个边界 # generated in some way at runtime bounds = [[0,10], [30,35], [-1, 2], [-30, 105], [132, 200006]] # runtime value, not a constant value = 45 for bound in bounds: if value >= bound[0] and

我有大量的边界(两个数字定义了一个最小和最大范围),我需要一个有效的方法来查找包含我正在搜索的值的每个边界

# generated in some way at runtime
bounds = [[0,10], [30,35], [-1, 2], [-30, 105], [132, 200006]]

# runtime value, not a constant
value = 45


for bound in bounds:
    if value >= bound[0] and value <= bound[1]:
        # do something with value
#在运行时以某种方式生成
边界=[[0,10],[30,35],-1,2],-30105],[132200006]]
#运行时值,不是常量
值=45
对于边界内的边界:

如果值>=bound[0]且值则范围为生成器,没有任何内容。但你可以用“in”

>>> r = range(2,20)
>>> 3 in r

也许是一个开始。你试过什么吗?让我们看看你有什么不难的。尝试一下,你就会得到它。如果您使用的是
范围
对象,则可以使用属性
开始
停止
步骤
@arvindpdmn创建一个以线性时间运行的对象并不困难,但我需要它比这更高效。由于我有数千到数百万个范围,“一个范围就是一个生成器”——只有在Python3i中,我才有多个范围,而且遍历每一个范围效率很低,因为它们有很多。我看到您添加了示例代码。这看起来确实非常有效。现在假设您需要以某种方式保持边界,您至少也可以创建一些“一般边界”。首先是[0,10],这也是一个广义界。添加[30,35],没有重叠,有两个“一般边界”。现在添加[-1,2],这与第一个重叠,因此将[0,10]替换为[-1,10]。[-30,105],[132,200006]我必须练习这种评论格式的格式:-(我会再试一次[0,10]给出了一个总的范围,[30,35],也[-1,2]与第一个重叠,所以你用[-1,10][-30,105]替换它,它同时包含第一个和第二个,所以现在你有了一个上下限[132,200006]没有重叠。如果你使用上限和下限,我会这样做。否则只需创建一个列表或设置所有值-这一切取决于你的问题空间。
def valFinder(seq , number):
  if number in seq:
    return True
  return False


print( valFinder( range(1,10) , 5 ) ) 
>> True
print( valFinder( range(10,15) , 5 ) ) 
>> False