def averageCandidateVotes(filename, column):
data = pd.read_csv(filename)[column]
x = data.mean()
return x
def averageVotes(filename):
candidates = ['brow', 'nade', 'harr', 'hage', 'buch', 'mcre', 'phil', 'moor']
some_list = []
for cand in candidates:
some_list.append(averageCandidateVotes(filename, cand))
return some_list
我有兩個函式averageCandidateVotes回傳候選人收到的平均投票。第二個函式averageVotes:獲取一個 csv 檔案,并且應該回傳候選串列中每個候選的均值串列。問題是我只看到一個值被附加到“some_list”而不是每個候選人的值。我在回圈中做錯了什么?
我期待這樣的輸出:
[344.7164179104478, 108.32835820895522, 133.92537313432837,360.67164179104475, 109.22388059701493, 120.41791044776119, 126.91044776119404]
但我只是得到
[344.7164179104478]
對于不附加到串列的其余值,我做錯了什么?完整的資料集可以在這里找到:https ://file.io/gFugYB8sOupl
uj5u.com熱心網友回復:
我認為您需要拉出return some_list一個縮進級別。現在,它是你for cand in candidates回圈的一部分,所以在我們得到那個候選人的平均票數之后,我們就退出了這個函式。
如果您將其拉出,它將遍歷所有候選人,然后退出該功能。
def averageVotes(filename):
candidates = ['brow', 'nade', 'harr', 'hage', 'buch', 'mcre', 'phil', 'moor']
some_list = []
for cand in candidates:
some_list.append(averageCandidateVotes(filename, cand))
return some_list
uj5u.com熱心網友回復:
這是因為您在第一次檢查時回傳串列,它不會繼續迭代,只是在第一次檢查時停止。
這可以通過降低縮進級別來解決。
def averageVotes(filename):
candidates = ['brow', 'nade', 'harr', 'hage', 'buch', 'mcre', 'phil', 'moor']
some_list = []
for cand in candidates:
some_list.append(averageCandidateVotes(filename, cand))
return some_list # <- dropped indentation level
要改進,您可以使用list comprehension:
def averageVotes(filename):
candidates = ['brow', 'nade', 'harr', 'hage', 'buch', 'mcre', 'phil', 'moor']
return [averageCandidateVotes(filename,candidate) for candidate in candidates]
uj5u.com熱心網友回復:
您的 for 回圈在第一次迭代時停止,因為您回傳了一個值。因此,您只需附加第一個也是唯一值的平均值。因此,您只需取回該值即可。編輯以洗掉不正確的第一句話。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494406.html
上一篇:在所有資料集行中查找交點
