Наличие x.split(y)
всегда возвращать список 1 + x.count(y)
предметов является драгоценной регулярностью - как уже отмечал @ gnibbler, это делает split
и join
точные инверсии друг друга (как они, очевидно, должны быть),он также точно отображает семантику всех видов записей, соединенных разделителями (таких как csv
строк файла [[за исключением проблем с цитированием]], строк из /etc/group
в Unix и т. д.), что позволяет (как @ Roman'sупомянутый ответ) простая проверка (например) абсолютных и относительных путей (в путях к файлам и URL-адресам) и т. д.
Еще один способ взглянуть на это состоит в том, что вы не должны просто выбрасывать информацию из окна.без выгоды.Что можно было бы получить, сделав x.split(y)
эквивалентным x.strip(y).split(y)
?Ничего, конечно - легко использовать вторую форму, когда вы это имеете в виду, но если первая форма будет произвольно означать вторую, у вас будет много работы, когда вы делаете хотите первый (который, как указывает предыдущий абзац, далеко не редкость).
Но на самом деле мышление с точки зрения математической регулярности - это самый простой и общий способ научить себя создавать сносные API,Чтобы взять другой пример, очень важно, чтобы для любых допустимых x
и y
x == x[:y] + x[y:]
- что сразу указывает, почему один крайний срез должен быть исключен.Чем проще инвариантное утверждение, которое вы можете сформулировать, тем вероятнее, что полученная семантика - это то, что вам нужно в реальной жизни - часть мистического факта, что математика очень полезна при работе со вселенной.
Попробуйте сформулировать инвариант для диалекта split
, в котором начальные и конечные разделители имеют специальный регистр ... контрпример: строковые методы, такие как isspace
, не максимально просты - x.isspace()
isэквивалентно x and all(c in string.whitespace for c in x)
- это глупое ведение x and
, поэтому вы так часто обнаруживаете, что кодируете not x or x.isspace()
, чтобы вернуться к простоте, которую должен быть встроен в строковые методы is...
(при этом пустая строка «это» все, что вы хотите - вопреки чувству человека на улице, может быть, [[пустые наборы, такие как ноль и с, всегда смущают большинство людей ;-)]], но полностью соответствуюточевидный, отточенный математический здравый смысл! -).