Формирование задачи: как проверить, если строка начинается с любого префикса от ITERABLE?
Учитывая строку и несколько префиксов строки в таблице, такую как список или кортеж.
Как проверить, начинается ли строка с любой из предоставленных префиксов?
Вот три примера:
s = 'hello world' prefixes = ['hi', 'bye', 'no', 'hello'] # True s = 'finxter' prefixes = ['p', 'f', 'fi', 'xt'] # True s = 'mimi' prefixes = ['a', 'b', 'c'] # False
Обзор решения
Существует три способа проверить, если строка начинается с любого префикса из подразделения по строкам:
S.cstartswith (кортеж (префиксы))
любой (s.cstartswith (x) для x в префиксах)
Любая (карта (S.cstartswith, Prefixes))
Давайте погрузимся в каждый из тех, кто следующий!
Метод 1: пройти кортеж префиксов
Чтобы проверить, начинается ли данная строка с любого из нескольких префиксы
, преобразуйте счетчику префиксов в кортеж и передать его в string.startswith ()
метод так: S.ctartswith (кортеж (префиксы))
Отказ
Следующий код проверяет, если строка «Hello World»
начинается с любого из ряда префиксов.
s = 'hello world' prefixes = ['hi', 'bye', 'no', 'hello'] result = s.startswith(tuple(prefixes)) print(result) # True
Если вам интересно: вот более формальный обзор string.startswith ()
Метод:
str.startswith(prefix[, start[, end]])
приставка | обязательный | Строковое значение для поиска в начале String Str. Также может быть кортеж префиксов. |
Начало | по желанию | Индекс первой позиции, где префикс должен быть проверен. По умолчанию:. |
конец | по желанию | Индекс последней позиции, где префикс должен быть проверен. По умолчанию: (ул) -1. |
Но есть еще один элегантный решение на основе любой ()
функция. Давайте рассмотрим это следующее!
Способ 2: Используйте функцию любой ()
Чтобы проверить, начинается ли данная строка с любого из нескольких префиксы
, вы можете использовать Любая (считать)
Функция, которая возвращает Правда
Если хотя бы один из значений в итерателе оценивает Правда
Отказ Вы можете проверить каждый префикс против строки, используя выражение генератора Нравится так: любой (s.cstartswith (x) для x в префиксах)
Отказ
Вот тот же пример, что и раньше:
s = 'hello world' prefixes = ['hi', 'bye', 'no', 'hello'] result = any(s.startswith(x) for x in prefixes) print(result) # True
Выражение генератора S.cstartswith (x) для x в префиксах
генерирует логические значения, пока он не найдет Правда
значение. В этом случае это короткие замыкания исполнение и любой ()
Функция немедленно возвращает Правда
-A префикс был найден.
Вы также можете использовать карта ()
Функция вместо выражения генератора для преобразования каждого префикса в логическое значение:
Метод 3: Используйте функцию карты ()
карта ()
Функция преобразует утечку для нового, применяя «Функция трансформатора» к каждому элементу. Вы можете преобразовать каждую возможную строку префикса в логическое значение, действительно ли этот префикс действительно префикс заданной строки. Полученное, что истеченное для логических значений, затем можно проверить для Правда
значение, используя любой ()
Функция такая: Любая (карта (S.cstartswith, префиксы))
Отказ
Вот тот же пример, что и прежде чем использовать этот метод:
s = 'hello world' prefixes = ['hi', 'bye', 'no', 'hello'] result = any(map(s.startswith, prefixes)) print(result) # True
Резюме
Существует три способа проверить, если строка начинается с любого префикса из подразделения по строкам:
S.cstartswith (кортеж (префиксы))
любой (s.cstartswith (x) для x в префиксах)
Любая (карта (S.cstartswith, Prefixes))
Если вы хотите узнать о каждом из этих методов и стать мастером программирования, посмотрите на членство Premium Premium, недорогую подписку на компьютерные науки и курсы Python, которые будут повышать ваше понимание кода до уровня, которые никогда не видели!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.