本文介绍了有没有更好的方法来检查一个数字是否是两个数字的范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
我正在尝试检查一个数字是否在整数范围内,并根据它所在的范围返回一个数字。我想知道有没有更好、更有效的方法来做这件事:
def checkRange(number):
if number in range(0, 5499):
return 5000
elif number in range(5500, 9499):
return 10000
elif number in range(9500, 14499):
return 15000
elif number in range(14500, 19499):
return 20000
elif number in range(19500, 24499):
return 25000
elif number in range(24500, 29499):
return 30000
elif number in range(29500, 34499):
return 35000
elif number in range(34500, 39499):
return 40000
elif number in range(39500, 44499):
return 45000
这感觉像是浪费资源,如果有更好的方法,我将不胜感激。
推荐答案
由于您有连续的排序区域,因此执行此操作的一种更快且不太冗长的方法是使用bisect模块在断点列表中查找索引,然后使用它从值列表中获取相应值:
import bisect
break_points = [5499, 9499, 14499, 19499, 24499, 29499, 34499, 39499, 44499]
values = [5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000]
n = 10000
index = bisect.bisect_left(break_points, n)
values[index]
# 15000
如果有可能,您需要测试超过上一个断点的n值。或者,您可以将默认值添加到值列表的末尾。
这篇关于有没有更好的方法来检查一个数字是否是两个数字的范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)