Есть файл со студентами и оценками по трем предметам каждого студента, такого типа:
Петров;85;92;78
Сидоров;100;88;94
Иванов;58;72;85
На выходе нужно получить - среднюю оценку всех предметов ученика и в последней строчке среднюю оценку по каждому предмету всех учеников:
85.0
94.0
71.666666667
81.0 84.0 85.666666667
with open('datain.txt', 'r', encoding='utf-8') as infile, open('dataout.txt', 'w', encoding='utf-8') as outfile:
temp_2d_list = []
for line in infile:
temp_line_list = line.strip().split(';')[1:] # строка списка без первого элемента (имени)
temp_2d_list.append(temp_line_list) # тут заполняю двумерный список
sum_row = 0
average = 0
# вычисление средней оценки предметов студента
for row in range(len(temp_2d_list)):
for col in range(len(temp_2d_list[row])):
sum_row += int(temp_2d_list[row][col])
print(temp_2d_list[row][col], end=' ')
average = sum_row / len(temp_2d_list[row])
sum_row = 0
print()
outfile.write(str(average) + '\n')
# --------> Тут не удается. Не вычисляется средняя оценка каждого предмета по всем ученикам
# Хочу сделать общий случай, при разном кол-ве учеников и разном кол-ве предметов
# вычисление средней оценки каждого предмета всех учеников
for col in range(len(temp_2d_list[row])):
for row in range(len(temp_2d_list)):
sum_row += float(temp_2d_list[row][col])
#print(sum_row, end='')
average = sum_row / len(temp_2d_list[row])
sum_row = 0
print(str(average), end=' ')
outfile.write(str(average) + ' ')
Вывод такой:
(всего 3 величины а не 4, и не пойму почему именно такие значения)

Основной вопрос: Как пробегаться по вертикали двумернго списка (сумировать элементы или еще что..)