a_string = "A string is more than its parts!" matches = ["more", "wholesome", "milk"]
ifany(x in a_string for x in matches):
Аналогично, чтобы проверить, найдены ли все строки из списка, используйте all вместо any.
Ответ 2
any() на сегодняшний день это лучший подход, если все, что вам нужно, это True или False, но если вы хотите конкретно знать, какая строка / strings соответствует, вы можете использовать пару вещей.
Если вы хотите получить первое совпадение (с False по умолчанию):
match = next((x for x in a if x in a_string), False)
Если вы хотите получить все совпадения (включая дубликаты):
matches = [x for x in a if x in a_string]
Если вы хотите получить все неповторяющиеся соответствия (без учета порядка):
matches = {x for x in a if x in a_string}
Если вы хотите получить все неповторяющиеся соответствия в правильном порядке:
matches = [] for x in a: if x in a_string and x notin matches: matches.append(x)
Ответ 3
Вам следует быть осторожным, если строки в a или str становятся длиннее. Простые решения принимают O(S *(A ^ 2)), где S - длина str, а A - сумма длин всех строк в a. Для более быстрого решения посмотрите на алгоритм Ахо-Корасика для сопоставления строк, который выполняется за линейное время O (S + A).
Ответ 4
Просто чтобы добавить немного разнообразия с помощью regex: