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