在lis中找到最接近平均值的值

2024-05-16 20:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个家庭作业,它正在开发一个代码,将采取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)

它不起作用。:(


Tags: 代码列表数字meanremoveensayprint
2条回答

我今天找到了答案。 多亏了@adrtam。你知道吗

(我想我应该用英语做编码。因为我试着把它从土耳其语翻译成英语。o d 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)))

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

你所做的只是去除中间值,而不是平均值。要找到最接近平均值的数字,请再次扫描列表(您不需要首先对其进行排序):

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

我们使用一个列表diff来存储平均值和位置的绝对差值,然后找到最小差值并从liste中删除该位置。在那之后,你可以把平均数加到liste中,如果这是你家庭作业的一部分,你可以对它进行排序。你知道吗

相关问题 更多 >