split() vs split(' ') и strip() в Python — коротко и понятно

split() vs split(' ') и strip() в Python — коротко и понятно

@python_quiz

Разберем этот квиз

Код, который надо проанализировать:

python

Ниже разберём, что делает каждая строка, почему получаются именно такие результаты, и покажем промежуточные списки, чтобы было очевидно.

Что делает каждая функция

  • split() без аргументов:

- Делит по любому whitespace (пробел, таб, перевод строки и т.д.).
- Игнорирует последовательные пробельные символы (сложенные в один разделитель).
- Отбрасывает пустые строки, получающиеся из-за ведущих/конечных пробелов.

  • split(' '):

- Делит строго по символу пробела.
- Не объединяет подряд идущие пробелы — между ними появляются пустые строки в результате.
- Если строка начинается или заканчивается пробелом, в списке будут пустые элементы в начале/конце.

  • strip():

- Убирает ведущие и конечные пробельные символы, прежде чем вызывать split(' '), поэтому пустых элементов на краях не будет.

Выполнение и промежуточные результаты

Посмотрим на сами списки, которые получаются перед join:

python

Теперь join с разделителем '-' превращает эти списки в строки:

text

Пояснения по каждой строке вывода:

  • Первая строка: s.split() дал ['a','b','c'] → '-'.join(...) = "a-b-c".
  • Вторая строка: s.split(' ') дал пустые элементы для подряд и крайних пробелов → итог: "--a--b-c--" (два дефиса в начале и в конце, двойной дефис между a и b, один между b и c).
  • Третья строка: strip() убрал ведущие/концевые пробелы, затем split(' ') дал пустой элемент только между двумя соседними пробелами между a и b → "a--b-c".

Частые ошибки и откуда они берутся

  • Ожидание, что split(' ') ведет себя так же, как split() — нет. Главное отличие — как обрабатываются подряд и крайние пробелы.
  • Некоторые варианты вывода содержат одиночные дефисы в начале или в конце — такие варианты соответствовали бы ситуациям, где в результате есть ровно одно пустое значение на краях, либо код использует другие методы (например, split(None) или дополнительные strip вызовы). В данном коде исходная строка имеет две пробелы на краях, поэтому при split(' ') будет по два пустых элемента на краях -> по два дефиса при join.

Итог / правила, которые запомнить

  • split() (без аргумента) — безопасный способ разбивать по пробельным символам: удаляет лишние пробелы и пустые элементы.
  • split(' ') — строгая нарезка по символу пробела, сохраняет пустые строки при подряд и крайних пробелах.
  • strip() перед split(' ') убирает пустые элементы, возникшие из-за краевых пробелов.

Эти простые правила помогут предсказать результат любых подобных манипуляций со строками в Python.

Report Page