В чем разница между split() и replace(‘ ‘,»)?

#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.