【发布时间】:2015-08-27 21:41:17
【问题描述】:
很难找到这个问题的标题,所以让我描述一下这个问题。我有一个严格单调递增的浮点值列表,其中 0 和 1 分别是上限和下限。还有一个值,我想知道实际值在哪两个值之间。
考虑以下示例:
li = [0, 0.1, 0.2, 0.3, 0.5, 0.75, 0.9, 1.0]
我需要一个基本上返回匹配对索引的函数。如果值在 0 和 0.1 之间(准确地说:0
get_index(li, 0.3) = 3
get_index(li, 0.05) = 0
get_index(li, 0.9) = 6
我目前的方法是遍历列表,存储最后一项和当前项并使用计数器。基本上是这样的:
def get_index(li, val):
counter = 0
old_val = None
new_val = None
for item in li:
if new_val is None:
new_val = item
continue
old_val = new_val
new_val = item
if old_val <= val and val < new_val:
return counter
counter += 1
我觉得必须有一个更简单的方法。如何更短、更轻松地做到这一点?
【问题讨论】:
-
为什么
get_index(li, 0.9)会是 7 ?你的意思是6? -
@Kasramvd:不,7 是正确的,因为 0.9
-
“匹配对”到底是什么意思?
-
@Kasramvd:对不起,算了。晚了……当然,应该是 6 点。