Skip to main content
 首页 » 编程设计

python之检查数字在哪个范围内

2025年05月04日15开发

我需要找到数字(在本例中为 value)在哪个范围内。除了这个,我找不到任何其他方法来将 i 设置为我需要的:

if value < -64: 
  i = 0 
elif value < -32: 
  i = 1 
elif value < -16: 
  i = 2 
elif value < -8: 
  i = 3 
elif value < -4: 
  i = 4 
elif value < -2: 
  i = 5 
elif value < -1: 
  i = 6 
elif value < -0.5: 
  i = 7 
elif value < 0: 
  i = 8 
elif value < 0.5: 
  i = 9 
elif value < 1: 
  i = 10 
elif value < 2: 
  i = 11 
elif value < 4: 
  i = 12 
elif value < 8: 
  i = 13 
elif value < 16: 
  i = 14 
elif value < 32: 
  i = 15 
elif value < 64: 
  i = 16 
else: 
  i = 17 

这是糟糕的代码,我讨厌它。有什么办法可以做这样的事情吗?

ranges = [-64, -32, -16 ... 32, 64] 
i = find_which_range(value, ranges) 

谢谢!

请您参考如下方法:

使用bisect :

import bisect 
 
ranges = [-64, -32, -16, -8, -4, -2, -1, -0.5, 0, 0.5, 1, 2, 4, 8, 16, 32, 64] 
 
print(bisect.bisect(ranges, -65)) 
# 0 
 
print(bisect.bisect(ranges, -64)) 
# 1 
 
print(bisect.bisect(ranges, 63)) 
#16 
 
print(bisect.bisect(ranges, 64)) 
# 17 

bisect.bisect(l, value) 返回必须将 value 插入到 l 中的索引,以便所有值左边小于 value。搜索大型列表也会很快,因为它使用二分法算法。