Нахождение значения, ближайшего к среднему значению в списке - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть домашняя работа, и она разрабатывает код, который будет принимать 10 цифр от пользователя. Затем код должен добавить эти цифры в список. Не следует добавлять один и тот же номер дважды. Когда берут 10 чисел, нужно вычислить среднее. Сохраните списки оригинальной формы. Сортировать список по убыванию. Затем нужно удалить только один номер, ближайший к среднему значению в списке.

Вот моя проблема: Я не могу найти в списке самое близкое к среднему число.

#I tried this:
liste.append(mean)
liste.sort()
if liste[6]-liste[5]>=liste[5]-liste[4]:
 print("Ortalamaya("+str(mean)+") en yakın sayı "+str(liste[6])+" olarak bulunmuştur.")
 liste.remove(liste[6])
 liste.remove(mean)
else:
 print("Ortalamaya("+str(mean)+") en yakın sayı "+str(liste[4])+" olarak bulunmuştur.")
 liste.remove(liste[4])
 liste.remove(mean)

Это не работает. (

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Я нашел ответы на свои вопросы сегодня. Большое спасибо @adrtam.

(Полагаю, я должен написать код на английском языке. Потому что я пытался перевести его с турецкого на английский. O_o)

Вот ответ, который мне нужен;

import math

diff_list=list()
for num in numlist:
    diff=mean-num
    diff=math.fabs(diff)
    diff_list.append(diff)
print("str(numlist[diff_list.index(min(diff_list))])"+” is found as the closest number to the mean in the number list and deleted.")
numlist.pop(diff_list.index(min(diff_list)))

Я создал еще один список, чтобы сохранить значения абсолютных средних чисел чисел в списке номеров. Затем найдите ближайший к значению. Возьми свой индекс. Затем удалите этот индекс из списка номеров. Потому что они не отсортированы, поэтому их индекс должен быть таким же.

0 голосов
/ 18 апреля 2019

То, что вы сделали, это как удаление медианы, а не подлости. Чтобы найти число, близкое к среднему, отсканируйте список еще раз (вам не нужно сначала его сортировать):

diff = []
for i, value in liste:
    diff.append((abs(value-mean), i))
_, i = min(diff)
liste.pop(i)

Мы используем список diff, чтобы сохранить абсолютную разницу со средним значением и позицией, затем найти минимальную разницу и удалить эту позицию из liste. После этого вы можете добавить среднее значение к liste и отсортировать его, если это часть вашей домашней работы.

...