在python中,检查数字是否在特定范围内的最快方法是什么?

2024-05-14 19:56:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有5个范围:

1-50 ---> "range1"
51-100 ---> "range2"
101-150 ---> "range3"
151-200 ---> "range4"
201-250 ---> "range5"

范围不重叠,每个范围都有下限和上限,下一个范围从上一个范围结束的地方开始。我决定射程长度。它们的大小可能不相等。你知道吗

例如,我有一个显示数字的变量

x = 153

如果x在1到50之间,则返回“range1”,如果在51到100之间,则返回“range2”,依此类推。 在python中,考虑到可能有5个以上的范围,而且数量很大,那么最快的方法是什么?你知道吗


Tags: 方法数量地方数字range2range3range1射程
1条回答
网友
1楼 · 发布于 2024-05-14 19:56:40

因为您的范围是严格相邻的,并且是按递增顺序排列的,所以可以使用二分法:

from bisect import bisect

ranges = [1, 51, 101, 151, 201]
if 0 < x <= 250:
    print('range{}'.format(bisect(ranges, x))
else:
    print('Out of bounds')

对分需要O(logN)步,从N个可能性中找出匹配范围。你知道吗

相关问题 更多 >

    热门问题