簡體   English   中英

查找列表中最接近均值的值

[英]Finding a value closest to the mean in a list

我有一個家庭作業,它正在開發一個代碼,將從用戶那里獲取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)

它不起作用。 :(

你做的就像刪除中位數,而不是意思。 要查找最接近均值的數字,請再次掃描列表(您不需要首先對其進行排序):

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

我們使用列表diff來存儲平均值和位置的絕對差值,然后找到最小差值並從liste移除該位置。 之后,您可以添加平均值來liste並對其進行排序,如果這是您的家庭作業的一部分。

我今天發現了我的問題。 非常感謝@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)))

我創建了另一個列表來保存數字列表中數字的絕對平均值。 然后找到最接近的意思。 拿它的索引。 然后從數字列表中刪除該索引。 因為它們沒有排序所以它們的索引應該相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM