繁体   English   中英

一种pythonic方法,用于查找值是否在列表中的两个值之间

[英]A pythonic way how to find if a value is between two values in a list

有一个排序列表和一些随机值,我想找到值的范围。

列表是这样的:[0,5,10,15,20]并且值是,比方说8。

标准方法是从开始直到我们达到比我们更大的值(如下例所示),或执行二进制搜索

grid = [0, 5, 10, 15, 20]
value = 8
result_index = 0
while result_index < len(grid) and grid[result_index] < value:
    result_index += 1

print result_index

我想知道是否有更多的pythonic方法,因为这虽然很短,看起来有点眼睛疼痛。 感谢您的时间!

>>> import bisect
>>> grid = [0, 5, 10, 15, 20]
>>> value = 8
>>> bisect.bisect(grid, value)
2

编辑:

bisect - 数组二分算法

for min, max in zip(grid, grid[1:]): # [(0, 5), (5, 10), (10, 15), (15, 20), (20, 25)]
  if max <= value < min: #previously: if value in xrange(min, max):
    return min, max
raise ValueError("value out of range")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM