#python #python-3.x
#python #python-3.x
Вопрос:
Предположим, я хочу создать список входных данных
3 4 5 6 7
без пробелов. Есть ли техническая разница между list(map(int, input().split()))
и list(map(int,input().replace(' ','')))
?
Я ввожу список такого рода для вопроса о HackerRank. split()
Версия, кажется, всегда работает, но replace(' ','')
версия, похоже, работает только для входных данных короткой длины.
Ответ №1:
list(map(int,input().replace(' ','')))
произойдет сбой, если ваши числа содержат более двух цифр, поскольку он преобразует каждый символ в int .
Пример:
>>> inp = '1 2 3 50'
>>> list(map(int, inp.replace(' ','')))
[1, 2, 3, 5, 0]
>>> list(map(int, inp.split()))
[1, 2, 3, 50]
По той же причине он также не может обрабатывать отрицательные значения или значения с плавающей запятой.
Ответ №2:
Эти два метода очень разные. Replace() возвращает объект str, тогда как split() возвращает список строк. Ваша функция map() будет перебирать разные типы, что приведет к проблеме, описанной Loocid.