【发布时间】:2017-04-30 00:12:14
【问题描述】:
我有大量边界(定义最小和最大范围的 2 个数字)我需要一种有效的方法,我可以使用它来查找包含我正在搜索的值的每个边界。
# 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
上面这段代码显示了我需要的东西,但是效率极低,我需要运行数百万次。我尝试过使用某种 BSP,但是当边界重叠时,效果就不那么好了。
【问题讨论】:
-
stackoverflow.com/questions/38185688/… 可能是一个开始的地方。
-
你有没有尝试过?,告诉我们你得到了什么
-
没那么难。尝试一下,你会得到它。如果你使用
range对象,你可以使用属性start、stop和step。 -
@arvindpdmn 创建一个以线性时间运行的程序并不困难,但我需要它比这更有效。因为我有数千到数百万个范围