与列表中给出的数字相比,您如何找到最接近的数字?
这是我尝试过的,但我失败了:

setted_list = [2,9,6,20,15]
value_chosen = 17

while True:
    final_value = setted_list[0]
    if setted_list[1] - value_chosen < setted_list[0] - value_chosen:
        final_value = setted_list[1]
    if setted_list[2] - value_chosen < setted_list[1] - value_chosen:
        final_value = setted_list[2]
    if setted_list[3] - value_chosen < setted_list[2] - value_chosen:
        final_value = setted_list[3]
    if setted_list[4] - value_chosen < setted_list[3] - value_chosen:
        final_value = setted_list[4]
print(final_value)

我的输出总是在我列表的索引2中(又称setted_list[2])
我的算法哪里出错了?

最佳答案

如果你还不太了解lambda函数,

   minimum = float("inf")
   setted_list = [2,9,6,20,15]
   value_chosen = 17
   for val in setted_list:
       if abs(val - value_chosen) < minimum:
           final_value = val
           minimum = abs(val - value_chosen)


   print final_value

关于python - 查找与列表中给出的数字最接近的数字〜Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45336645/

10-12 22:46