Как разбить строку на переменные с преобразованием

Нужно разделить input на переменные нужного типа. К примеру на вход получаем "Иван 10 100" необходимо разделить это на 3 переменные с типами str, int, int. Есть решение с написанием отдельного метода, но от него требуется избавиться.

def participant(name, score, penalty):
    return [- int(score), int(penalty), name]
amount = int(input())
members = [participant(*input().split()) for _ in range(amount)]

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

Автор решения: Sergey Tatarincev

Вы можете проверить состоит ли строка из одних только цифр и преобразовать только эти части

parts = []
string = 'hello 10 world 45'
for s in string.split(' '):
    if s.isdigit():
        parts.append(int(s))
    else:
        parts.append(s)
print(parts)
→ Ссылка
Автор решения: Игорь Старков

Построить список с помощью list comprehension

a = input()
result = [int(x) if x.isdigit() else x for x in a.split()]
print(result)
→ Ссылка