key
в min
используется для переназначения значений при их сравнении. Текущее значение передается функции, заданной как key
, и ее выходные данные используются при сравнении объектов вместо исходных объектов. Если вы добавите < 0.5
к этой функции, вместо расстояния в виде числа, вы вернете только логический флаг, который сообщает вам, если ваш номер близок к .
Что вы могли используйте вместо этого:
def min_in_limits(value, list_):
value = float(value) # if it is e.g. string
new_val = min(list_, key=lambda x: abs(float(x) - value))
if abs(new_val - value) < 0.5:
return new_val
return None
После того, как вы найдете свой минимум, проверьте, находится ли он в пределах вашего порогового значения 0.5
и верните None
, если это не так, что означает, что значение в list_
не близко достаточно. Вместо жесткого кодирования 0.5
вы можете передать его как аргумент функции.
Вы должны передать value
, что равно float
, и list_
, которое представляет собой список float
s или int
s, и в этом случае вы можете удалить value = float(value)
и заменить float(x)
только x
.
Кроме того, пожалуйста, не используйте ключевые слова (например, list
) в качестве имен переменных / параметров.