2016-11-16 73 views
0
def calc_average(scores) 
    x = scores[1:] 
    return (sum(x)/float(len(x))) 

這是一些代碼,應該找到一個數字列表的平均值,但不算最低。我不知道如何找到列表中的最低數字,將其從中刪除,然後找到其平均值。誰能幫忙?謝謝! (最低的數字並不總是列表中的第一個數字,這是我犯的......)我如何讓我的代碼刪除最低的整數?

回答

1

您可以使用min()函數查找列表的最小值,然後您可以刪除list.remove()函數的值。

檢查了這一點參考https://docs.python.org/2/library/functions.html#minhttps://docs.python.org/3.6/library/functions.html#min

+0

DEF calc_average(得分): Y =分鐘(得分) list.remove(Y) X =分數[1:] 回報(總和(X)/浮子(LEN(X))) – FireFume

+0

這會工作嗎?我不斷收到錯誤:> – FireFume

+0

對於list.remove,您需要輸入列表變量的實際名稱。所以如果你的列表被命名爲x,你會做x.remove(#),其中#是你想要移除的整數(我假設)。 –

0

你可以使用

return float((sum(scores) - min(scores)))/(len(scores) - 1) 

那找到所有得分的總和,然後刪除最小得分,之後通過分數的數量除以之前去除。

請注意,這裏沒有錯誤檢查,所以這對於長度爲零或一列的列表將無法正常工作。 float()用於確保Python 2.x中的浮點除法。這使用了Python函數的全部速度,但它確實遍歷了兩次分數。手動編碼的函數只能循環一次,但在執行多個命令時會再次變慢。

2

我會排序列表然後romove第一個元素。

a = [ 3,2,6,3,8,7,2,1] 
a.sort() 
a = a[1:] 
print a 
print float(sum(a))/len(a) 

這樣做的好處是,即使它只是去除單個最低值的更多工作,但它是可銷售的。假設您想要刪除最低的2個或3個值,一旦列表排序後,這將很容易。

+0

謝謝,這個爲我工作! :) – FireFume

3

您不必從字面上刪除該項目;你可以從計算中刪除它。

def calc_average(scores) 
    return (sum(scores) - min(scores))/float(len(x) - 1)