У меня есть строка для ввода с элементами, разделенными запятыми. - marks = 'marks1,marks2,marks3'
Используя функцию разделения, я получил список оценок. - marks = marks.split(',')
Это дает нам «пометку» списка с элементами как srting, однако я хочу, чтобы в качестве элементов были целые числа. marks[int]
Есть ли у нас встроенная функция для ее преобразования или нам нужно использовать следующий цикл for?
for i, m in enumerate(marks):
marks[i] = int(m)
Приведенный выше цикл работает, но я просто хочу знать, есть ли у нас встроенная функция.






Используйте понимание списка.
>>> marks = marks.split(',')
>>> [(int)(e.split('marks')[1]) for e in marks.split(',')]
[1, 2, 3]
>>>
Если ваша строка равна 'marks1,marks2,marks3', вы не можете преобразовать ее напрямую в целые числа путем приведения, поскольку она содержит нечисловые символы.
Но если вы использовали его для объяснения своей проблемы, а строка на самом деле похожа на '31,78,45', вы можете преобразовать ее в список целых чисел с пониманием списка:
marks = [int(m) for m in marks]
marks = '31,78,45'
marks = marks.split(',')
marks = [int(m) for m in marks]
Итак, вы можете использовать регулярные выражения (import re), которые созданы для получения списка всех включенных цифр.
>>> import re
>>> marks = 'marks1,marks2,marks3,marks4,marks5,marks10,marks4093'
>>> list(map(int, re.findall(r'(\d+)', marks)))
[1, 2, 3, 4, 5, 10, 4093]
Это также поможет вам отслеживать, есть ли у вас разные маркеры и вас интересует только определенное ключевое слово перед целым числом.
>>> marks = 'marks1,narks2,carks3,marks4,Sarks5,marks10,tarks4093'
>>> list(map(int, re.findall(r'marks(\d+)', marks)))
[1, 4, 10]
Убедитесь, что интересующие вас элементы заключены в скобки (...). В данном случае это числовые значения. В противном случае преобразование int завершится неудачей.
Каким целым числом должно стать, например,
marks1?