Как в Python разбить строку на символы
3 простых способа, которые можно использовать в работе и пет-проектах.
Иллюстрация: Оля Ежак для Skillbox Media
А зачем, собственно, в Python разбивать строки на символы? Например, для того, чтобы проверять правильность пароля и почты клиента, когда он регистрируется в онлайн-сервисе.
Скажем, на нашем сайте есть требование: в пароле должны быть как минимум одна заглавная, одна строчная буква и одна цифра. Мы можем написать скрипт на Python, который проверяет каждый символ и выносит вердикт: верный пароль или нет.
Если вы ещё не знакомы с Python, советуем прочитать нашу статью, в которой мы рассказываем, как быстро и бесплатно изучить этот замечательный язык программирования.
Циклы for и while, или метод «в лоб»
Как работает: проходит по каждому символу в строке и добавляет его в отдельный список.
Самый примитивный способ поделить строку на символы — сделать это с помощью циклов. Выбираем нужные символы из строки и складываем в список.
Выглядит это так:
Результат:
Перед тем как разбить строку, мы подготовили пустой список symbols, в который на каждой итерации цикла помещали по символу из строки password. В symbols попало всё — буквы, цифры и прочие знаки.
Теперь, чтобы понять, корректен ли пароль, напишем функцию, которая будет это проверять:
Проверим работу функции:
Результат:
Цикл for легко превращается в цикл while. Для этого нужно ввести дополнительную переменную-счётчик:
Результат тот же:
Переменная index следит за тем, когда закончится строка. Если её значение больше или равно длине строки, то нам нужно прекращать цикл: все символы уже добавлены.
Функция проверки пароля по-прежнему работает:
Результат:
👉 Циклы for и while подойдут, если не хотите заморачиваться с кодом и вспоминать названия функций. Да и писать много не придётся — всего пару строк.
Читайте также:
Генераторы списков — то же, что и for, но короче
Как работает: делает то же самое, что и цикл for, но записывается всего в одну строчку.
Выглядит так:
Результат:
Здесь мы использовали встроенную в Python возможность — list comprehension. Термин сложно перевести на русский, поэтому его называют генератором списков.
Суть простая — это обычный цикл for, который записывается в одну строчку. Чтобы понять, как он работает, перепишем код выше в виде обычного цикла for:
В короткой записи мы указываем, из какого списка берём элементы — in password, как будем именовать текущий элемент — for symbol, и что делаем с самим элементом — просто сохранять в неизменном виде: symbol.
👉 Генераторы списков позволяют записывать длинный цикл for в одну строку. Это полезно, когда не нужно сильно изменять данные, а нужно просто сохранить их.
Функция list — для самых продуктивных
Как работает: делает то же самое, что и циклы for и while, но сокращает количество строк кода.
Когда не хотим писать даже пару строк кода, но разложить строку на символы всё ещё нужно, на помощь приходит функция list. Она превращает набор элементов в список:
Результат:
Получили такой же результат, но использовали всего одну строку кода. Очень неплохо.
Проверим работу функции проверки пароля:
Результат:
👉 Функция list — самая лаконичная. Чтобы получить список символов, из которых состоит строка, достаточно просто вызвать функцию со строкой в качестве аргумента.
Что запомнить
Выделим главные тезисы из статьи:
- использование циклов for и while — это самый простой, но не самый эффективный способ достать из строки все символы;
- генераторы списков — это удобная и короткая замена цикла for;
- применение функции list — самый короткий способ разбить строку на символы.