Перебор значений списка в Python

Имеется задача, где известен список учеников и их оценки соответственно: первая - математика, вторая - физика, третья - русский язык (не особо важно). Мне нужно определить среднюю оценку по всем ученикам в зависимости от предмета, т.е., например, среднюю оценку по физике. Для этого я делаю перебор элементов под индексом 1 каждого подсписка основного списка. Однако, при переборе (по непонятным мне причинам), например, по первому ученику Kennedy вместо соответствующего индексу [1] значения 28 у меня берется сначала 2, потом отдельно 8 и результат по всем ученикам получается [2, 8, 8, 7, 3, 3] вместо [28, 87, 33]. Хотя, как я вижу этот элемент идет в списке неделимым '28'. Подскажите пожалуйста, по какой причине так происходит, что я делаю не так (это важно, т.к. хочу понять) и как должно быть, чтоб элементом выступало число 28, а не по отдельности 2 и 8.

spisok = []
spisok2 = []
vvod=['Kennedy;28;72;96','Fitzgerald;87;40;43', 'Stevenson;33;74;50']
for i in vvod:
    i = spisok.append(i.strip().split(';'))
for ychenik in spisok:
    for matematika in ychenik[1]:
        spisok2.append(int(matematika))
print(spisok2)

Ответы (1 шт):

Автор решения: prok0l
spisok = []
spisok2 = []
vvod=['Kennedy;28;72;96','Fitzgerald;87;40;43', 'Stevenson;33;74;50']
for i in vvod:
    spisok.append(i.strip().split(';'))
    
# говнокод
for ychenik in spisok:
    matematika = ychenik[1]
    spisok2.append(int(matematika))
    
#реализация хорошего кода
spisok2 = [int(i[1]) for i in spisok]
print(spisok2)
print(sum(spisok2)/len(spisok2)) #среднее арифм
→ Ссылка