在(浮点数)列表中找到下一个较低的值?

fre*_*rik -2 python python-2.6

我应该怎么写这个find_nearest_lower函数?

>>> values = [10.1, 10.11, 10.20]
>>> my_value = 10.12
>>> nearest_lower = find_nearest_lower(values, my_value)
>>> nearest_lower
10.11
Run Code Online (Sandbox Code Playgroud)

这需要在Python 2.6中工作而无需访问numpy.

Kev*_*vin 5

>>> def find_nearest_lower(seq, x):
...     return max(item for item in seq if item < x)
...
>>> values = [10.1, 10.11, 10.20]
>>> my_value = 10.12
>>> nearest_lower = find_nearest_lower(values, my_value)
>>> nearest_lower
10.11
Run Code Online (Sandbox Code Playgroud)

如果没有任何seq小于的值,则此方法将引发异常x.如果这是不合需要的行为,您可以返回一个sentinel值,例如None:

def find_nearest_lower(seq, x):
    candidates = [item for item in seq if item < x]
    if not candidates: return None
    return max(candidates)
Run Code Online (Sandbox Code Playgroud)

要么

def find_nearest_lower(seq, x):
    try:
        return max(item for item in seq if item < x)
    except ValueError:
        return None
Run Code Online (Sandbox Code Playgroud)

......如果你更像是一个"请求宽恕"的人而不是"在你跳跃之前"的人.