Вот решение на скорую руку:
listOfSubjects = ['folklore', 'lingIntro']
studentName = ['Ivan', 'Olga']
listOfStudent = [Student(x, 1, listOfSubjects) for x in studentName]
for i in listOfStudent:
for subj in listOfSubjects:
i.grade(subj, random.randint(2,5))
for i in listOfStudent:
print('Student: %s, year: %s, grade1: %s, grade2: %s' % (i.name, i.year, i.grades[listOfSubjects[0]], i.grades[listOfSubjects[1]]))
вот вывод:
Student: Ivan, year: 1, grade1: [5], grade2: [2]
Student: Olga, year: 1, grade1: [2], grade2: [3]