Строки
Повторение
What’s New In Python 3.6 Сюда стоит заглянуть!
Лексикографическое сравнение
Сначала сравниваются первые элементы последовательностей, и, если они отличаются, то результат их сравнения определяет результат; если они равны, сравниваются следующие элементы и т.д., пока не будет определен результат или одна из последовательностей не будет исчерпана. Если два элемента сами являются последовательностями одного типа, то лексикографическое сравнение выполняется рекурсивно. Если все элементы двух последовательностей в результате сравнения оказываются равными, то последовательности считаются равными. Если одна из последовательностей является началом другой, то меньшей считается последовательность с меньшим количеством элементов. Лексикографический порядок строк определяется порядком следования ASCII символов.
Вспомним методы списков и рассмотрим несколько новых.
a.count(x) - Возвращает количество элементов со значением x. a.insert(I,x) - Вставляет на i-ый элемент значение x. a.remove(x) - Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует. a.extend(list) - Расширяет список, добавляя в конец все элементы списка list.
Вспомним о том, что можно написать циклический конструктор.
Строки
Мы уже знакомы с понятием “строки”. Начнем с того, как задавать строку. Не имеет значение, в каких кавычках писать строку. Это могут быть и “ ”и ‘ ’.
Обращаем внимание на то, что если строка уже содержит кавычки, то стоит записать эту строку в одинарных кавычках. Печатное представление символа перевода строки
Строковое представления берется из метода __repr__. Была сгенерирована строка, а от неё представление.
Следует отметить опасность использования \. \b, \t, \r….
Что представляют собой строки как объекты Python?
__iter__ - строка является последовательностью. __getitem__ - строка является индексируемой последовательностью.
Строки можно поместить в место, где происходит распаковка или итерирование.
И в цикл for
Замечание: элементами строки являются строки единичной длины. В следующем примере возвращается одно и тоже…
Как работает операция проверки принадлежности?
В случае строк операция in проверяет наличие подстроки в строке. Встроенные методы – это основа списков. Хотя многие из них бессмысленные. Рассмотрим несколько таких методов.
s.lower()-заменяет все символы строки соответствующими строчными буквами. s.casefold() – аналогично s.lower, но дополнительно преобразует все символы с диакрическими знаками и лигатуры в буквы стандартной латиницы. Обычно применяется для сравнения строк.
Из строки делаем шестизначную строку. Забиваем нулями недостающую длину.
Более интересные штуки
Метод strip() позволяет обрезать пробельные символы с краев строки.
Метод replace() заменяет все или n вхождений строки.
Метод partition() возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки.
Метод split() возвращает список строк, разрезав исходную строку на части по пробелам.
Метод join(). У этого метода один параметр: список строк. В результате получается строка, полученная соединением элементов списка (которые переданы в качестве параметра) в одну строку, при этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод.
Но у метода split() есть другой способ работы.
Нет “а”, так как “а” была разделителем. Как мы увидели, различие состоит в том, что если split() без параметра, то удаляются все пробельные символы.
Форматирование строк с помощью метода format
Иногда возникают ситуации, когда нужно сделать строку, подставив в неё некоторые данные, полученные в процессе выполнения. Подстановку данных можно сделать с помощью форматирования строк. Форматирование можно сделать с помощью оператора %, либо с помощью метода format.
Передаем столько параметром, сколько скобок в строке форматирования. Напишем программу.
Модифицируем программу.
Переводим кортежи в строки, затем с помощью join объединяем строки.
Строки не хранятся по байтам. Они перекодированы в юникод. Современная кодировка содержит неизвестное количество байтов.
s.encode() – побайтно выведенная строка.