2015-05-21 2 views
-3

У меня есть список переменных [A1, A2, A3, A4, A5, A6, A7, A8, A9, A10] до 1 десятичного места. У меня есть переменная B, которая может быть любым числом до десятичной точки. Я хотел бы найти ближайшее значение в списке переменной B. И вернуть не значение, а число A (например, A5).Найти переменную, ближайшую к значению в списке

+3

Добро пожаловать Колин! Что вы пробовали? Не могли бы вы опубликовать свой код и объяснить, какая проблема у вас есть? – Llopis

+0

Действительно ли вы хотите, чтобы переменная _name_ или индекс в списке? Первый, как правило, не будет (легко) возможен, но вы можете использовать словарь и вернуть ключ. –

+0

'values.index (min (values, key = lambda i: abs (B - i)))' – CoryKramer

ответ

0

Если вы знаете NumPy, вы можете написать, как это:

matA = array([A1, A2, A3, A4, A5, A6, A7, A8, A9, A10]) 
matB = array([B]) 
diff = abs(matA - matB) 
minDiffValue = min(diff) 

А потом, писать код, как это, чтобы найти индекс элемента:

closeValueIndex = [] 
index = 0 
for i in diff: 
    if i == minDiffValue: 
     closeValueIndex.append(index) 
    index += 1 
1
from operator import itemgetter 

a = [A1, A2, ........, A10] 
minimum_list = [abs(variable - B) for variable in a] 

return min(enumerate(minimum_list), key=itemgetter(1))[0] 

Это будет верните индекс переменной с минимальной разницей.

return a[min(enumerate(minimum_list), key=itemgetter(1))[0]] 

Это будет возвращать значение в списке с минимальной разницей с переменными В

0
In [1]: vals = [0.8, 5.0, 10.2, 15.6] 
     value = lambda myvalue: min(vals, key=lambda x: abs(x - myvalue)) 
     value(9.8) 
Out[1]: 10.2 

Но если вы хотите, чтобы вернуть нечисловой ответ, на который я думаю, что вы хотите. Просто используйте то же самое, но со словарем и значениями в качестве ключей, ответы на которые вы хотите вернуть в качестве значений:

In [2]: vals = {0.8:'A1', 5.0:'A2', 10.2:'A3', 15.6:'A4'} 
     value = lambda myvalue: vals.get(min(vals, key=lambda x: abs(x - myvalue))) 
     value(9.8) 
Out[2]: 'A3' 
Смежные вопросы