擅长:python、mysql、java
<pre><code>from statistics import mean
import csv
with open("Class1.csv") as f:
# create reader object
r = csv.reader(f)
# skip headers
headers = next(r)
# exract name from row and use statistics.mean to average from row[1..
# mapping scores to ints
avgs = ((row[0], mean(map(int, row[1:]))) for row in r)
# unpack name and average and print
for name, avg in avgs:
print(name,avg)
</code></pre>
<p>除非你已经写了空行到你的csv文件将不会有任何,不知道如何头适合它,但你可以使用它,如果必要的</p>
<p>您还可以使用python3中的<code>*</code>语法进行解包,我认为这样更好:</p>
<pre><code>avgs = ((name, mean(map(int, row))) for name, *row in r)
for name, avg in avgs:
print(name,avg)
</code></pre>
<p>要排序,请使用reverse=True按平均值排序,然后从最高到最低排序:</p>
<pre><code>from statistics import mean
import csv
from operator import itemgetter
with open("Class1.csv") as f:
r = csv.reader(f)
avgs = sorted(((name, mean(map(int, row))) for name, *row in r),key=itemgetter(1),reverse=True)
for name, avg in avgs:
print(name,avg)
</code></pre>
<p>传递<code>key=itemgetter(1)</code>意味着我们按第二个子元素排序,第二个子元素是每个元组的平均值</p>