Оба ваших примера кода верны.Если вы хотите применить функцию к списку, вы можете использовать понимание списка или передать карту в конструктор списка, хотя понимание списка предпочтительнее.
Проблема связана с вводом.В частности,
marks.append(students_and_marks[1::2])
Рассмотрим,
>>> a = [1,2,3,4,5]
>>> a[1::2]
[2, 4]
Из вашего вопроса не ясно, что вы намеревались делать со своим слайсом, т.е. students_and_marks[1::2]
.Вы добавляете его к marks
, хотя students_and_marks[1::2]
уже является списком.
То, что вы сделали, было
>>> marks = ['1', '2']
>>> nested_marks = []
>>> nested_marks.append(marks)
>>> nested_marks
[['10', '9']]
>>> int(nested_marks)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
Хотя я полагаю, что вы намеревались это сделать,
>>> students_and_marks = ['Linus', '10', 'David', '9']
>>> students = students_and_marks[::2]
>>> students
['Linus', 'David']
>>> marks = students_and_marks[1::2]
>>> marks
['10', '9']
>>> new_marks = [int(mark) for mark in marks]
>>> new_marks
[10, 9]