Разберём ещё один тип данных – string(), ну или строки по-нашему.
Строка – это последовательность символов, а раз последовательность, значит её можно перебирать. Но об этом чуть позже. А пока разберёмся с тем, как создать строку.
Для этого надо написать любой текст и заключить его в апострофы
или в кавычки
Особой разницы нет, но не надо смешивать, т.е. поставить перед строкой апостроф, а после кавычки, не получится – это приведёт к ошибке.
А вот такое написание допустимо:
Кавычки внутри апострофов, ну или наоборот. Результат будет таким:
Сложение и умножение строк
Самое простое, что можно сделать со строками – это сложить их. Например, так:
Результатом станет единая строка:
Ещё можно умножить строку на число, что скопирует её заданное количество раз объединив в одну длинную строку:
Это простейшие действия со строками... перейдём к более сложным.
Перебор символов в цикле
Вернёмся к тому, что строка – это последовательность. Попробуем перебрать в цикле слово "python":
Из примера видно, что на каждой итерации цикла переменная char получает в качестве значения очередной символа из заданного слова word.
Индексация символов
Помимо этого, каждый символ имеет свой порядковый номер – индекс. Индексация ведётся слева-направо и начинается с нуля.
По индексу можно получить отдельный символ слова, например так:
В результате будет выведен символ "h". Да, он идёт четвёртым в слове, но индекс у него "3", т.к. отсчёт идёт с нуля.
Кстати, индекс может быть и отрицательным. Тогда отсчёт будет идти с конца слова.
Этот код выведет символ "n" – последний в слове, т.к. в данном случае отсчёт идёт с единицы.
Перебор символов в цикле по индексам
Зная об индексах, можем реализовать перебор символов слова несколько иначе. Но сначала разберёмся с длиной строк. Функция len() возвращает длину строки, т.е. количество символов в строке.
В результате получим 6.
Вот теперь можно перебирать:
В данном случае мы обращаемся не непосредственно к символу в слове, а к самому слову, указав при этом индекс символа. Как-то так. Перечитайте пару раз, если не всё понятно )
Преобразуем строку в список и множество
И снова вернёмся к тому, что строка – это последовательность. (Я вас ещё не утомил?) А какие ещё последовательности мы уже знаем? Правильно... списки и множества!
Так почему бы не попробовать преобразовать строку в одну из них? Ну или в обе. Так вперёд! Но в этот раз поработаем со словом "колобок".
Для преобразования используем функции list() и set(). Посмотрим же на результат:
Как видим в первом случае получился список символов, ВСЕХ символов, да ещё и в том же порядке, в котором они идут в слове. Почему сделан акцент на всех символах? Да потому что во втором случае части символов нет. Каких? Тех, которые повторяются. Множество их исключило.
Разберём и соберём
Строку можно разобрать на отдельные слова и создать из них список. Или же наоборот, объединить слова из списка в одну строку. Для этого нам понадобятся два метода: split() и join().
Где может пригодиться?
Допустим у вас есть строка, которая содержит фамилию, имя и отчество. Из неё надо получить каждый элемент по отдельности, чтобы, например, использовать только имя, или фамилию и имя, или имя и отчество, ну вы поняли...
Или обратная ситуация. Из отдельных элементов надо получить строку с полным ФИО.
Разбираем... метод split()
Возьмём строку "Иванов Иван Иванович" и применим к ней вышеуказанный метод.
Напомню, что метод – это та же функция, но применяемая к конкретному объекту (в нашем случае к строке в переменной full_name). А раз функция, значит не забываем про круглые скобки "()", даже если ничего в них не указываем. Итак, наш результат.
Теперь можно комбинировать эти элементы как нам вздумается:
Хочешь имя, отчество... пожалуйста:
Фамилия, имя... легко:
Теперь разберёмся с аргументом функции. Что если у вас есть какой-либо перечень, например, список продуктов через запятую:
Попробуем разобрать его на части:
Результат не совсем тот, который хотелось бы видеть. Есть лишние запятые.
Вот тут и придёт на помощь аргумент. Укажем в качестве аргумента разделитель, по которому хотим разбить строку. В нашем случае это будет запятая и пробел – ", "
В итоге получим то, что нужно:
Всё дело в том, что по умолчанию разделителем является пробел. Поэтому в случае с ФИО проблем не было. А вот для списка продуктов пришлось явно указывать разделитель.
Идём дальше... соберём элементы списка в строку.
Собираем... метод join()
Для примера снова возьмём ФИО и список продуктов.
Начнём с ФИО. Пусть у нас есть список, содержащий отдельно фамилию, имя и отчество. Укажем символ, с помощью которого будет выполнено объединение, применим к нему метод join(), в который передадим список в качестве аргумента:
В результате получим ФИО полностью одной строкой:
Обратите внимание, что объектом, к которому применяется метод join() является "объединитель", т.е. символ (или группа символов). Сам же список идёт в качестве аргумента метода join().
Теперь к списку продуктов. Тут нам необходимо получить строку из продуктов, перечисленных через запятую (и пробел конечно же). Легче лёгкого... укажем в качестве "объединителя" нужные нам символы:
И вот он... результат:
Резюмируем
1) Строка – последовательность символов.
2) Строки можно складывать между собой и умножать строку на число.
3) Каждый символ в строке имеет индекс:
4) Строку можно преобразовать в список или множество:
5) Строку можно разобрать на элементы списка...
6) ... или собрать из элементов списка
На этом пока остановимся. Вопросы и предложения пишите в комментарии. Ещё было бы неплохо подписаться и поставить лайк.
А ещё подписывайтесь на канал в Telegram. Удачи!