所以問題是:平均成績(成績列表)返回列表成績列表中的所有學生的平均成績,其中內部列表包含學生ID和成績。使用嵌套列表計算python的平均值
這是我迄今爲止...但我不知道怎麼去第2個數字爲每個列表以獲得平均:/
grade_list=[['001',20],['002',45],['003',56]]
for i in grade_list:
i= sum(i)/3
print (i)
所以問題是:平均成績(成績列表)返回列表成績列表中的所有學生的平均成績,其中內部列表包含學生ID和成績。使用嵌套列表計算python的平均值
這是我迄今爲止...但我不知道怎麼去第2個數字爲每個列表以獲得平均:/
grade_list=[['001',20],['002',45],['003',56]]
for i in grade_list:
i= sum(i)/3
print (i)
你可以試試,列表理解
grade_list=[['001',20],['002',45],['003',56]]
avg = sum([e[1] for e in grade_list])/len(grade_list)
print(avg)
40.333333333333336
,或者您可以使用for
廁所p
grade_list=[['001',20],['002',45],['003',56]]
sumV = 0
for grade, value in grade_list:
sumV += value
print(sumV/len(grade_list))
40.333333333333336
或者使用map
和itemgetter
from operator import itemgetter
grade_list=[['001',20],['002',45],['003',56]]
avg = sum(map(itemgetter(1),grade_list))/len(grade_list)
print(avg)
40.333333333333336
或使用mean
如果是蟒蛇> = 3.4
from statistics import mean
from operator import itemgetter
grade_list=[['001',20],['002',45],['003',56]]
print(mean(map(itemgetter(1),grade_list)))
40.333333333333336
或者,你可以使用reduce
from functools import reduce
from operator import itemgetter
grade_list=[['001',20],['002',45],['003',56]]
print(reduce(lambda x, y: x + y/len(grade_list), map(itemgetter(1),grade_list), 0))
40.333333333333336
或者用pandas
import pandas as pd
grade_list=[['001',20],['002',45],['003',56]]
df = pd.DataFrame(grade_list)
print(df.mean(axis=0)[1])
40.3333333333
使用列表索引。例如,用您的代碼中的變量i替換爲i [1](不是for循環,無論您在裏面調用什麼)。這將讓你的循環看看列表中的SECOND元素,即成績。現在它只是看整個列表。
此外,您的代碼已關閉。你想通過列表中的所有第二個元素,然後通過元素的總數分裂,所以
average=0
for l in grade_list:
average += l[1]
average/=len(grade_list)
print average
記住,列表索引從0開始。
這裏有一種方法:
grade_list = [['001', 20], ['002', 45], ['003', 56]]
total = 0
for i in grade_list:
total += i[1]
average = total/len(grade_list)
print(average)
>>> grade_list=[['001',20],['002',45],['003',56]]
>>> print(round(sum([sublist[1] for sublist in grade_list ])/len(grade_list),2))
40.33