split() с аргументом и без
Что делает функция
split разрезает строку на части по разделителю и возвращает список строк. Сам разделитель в результат не попадает.
1 2
Два разных поведения
1 2 3
Без аргумента split разбивает по любым последовательностям пробельных символов — пробелам, табуляциям, переносам строк — и заодно отбрасывает пробелы по краям. С аргументом " " он делит строго по каждому одиночному пробелу, порождая пустые строки.
Практический вывод: для чисел, разделённых пробелами, всегда пиши split() без аргумента.
Разделитель — не только пробел
1 2 3 4
Разделителем может быть и целая подстрока: "a::b".split("::") даёт ['a', 'b'].
Ограничение количества частей
Второй аргумент задаёт максимальное число разбиений:
1 2
rsplit делит с конца — удобно, когда нужно отделить последний элемент.
Связка с map: главный шаблон ЕГЭ
1 2 3 4
split даёт список строк, map(int, ...) превращает их в числа. Без int любые сравнения будут работать по алфавиту, а не по величине.
Пример с ЕГЭ: разбор таблицы (задания 26, 27)
Данные в этих заданиях идут строками, в каждой — несколько чисел через пробел. Каждая строка превращается в список чисел одним генератором:
1 2 3 4
Если в строке ровно два числа, удобнее сразу распаковывать по переменным:
1 2 3
Обратная операция: join
1 2 3
join работает только со строками — числа нужно предварительно превратить: " ".join(map(str, nums)).
