在列表中找到最接近均值的值

时间:2019-04-18 12:36:34

标签: python list numbers mean closest

我有一个作业,它正在开发一个将从用户那里取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 :(得分:0)

您所做的就像删除中位数,而不是意味着。要找到最接近均值的数字,请再次扫描该列表(您无需首先对其进行排序):

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

我们使用列表diff来存储均值和位置的绝对差,然后找到最小差并从liste中删除该位置。之后,您可以将均值添加到liste并进行排序(如果这是家庭作业的一部分)。

答案 1 :(得分:0)

我今天发现我的问题可以回答。 非常感谢@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)))

我创建了另一个列表,以将数字的绝对均值保存在数字列表中。然后找到最接近的意思。取其索引。然后从数字列表中删除该索引。因为它们没有排序,所以它们的索引应该相同。