В подходящие для Python способ проверить, если строка " X " является подстрокой Y
является:
if x in y:
Найти если Х
эквивалентно А
, Б
, С
, Д
, Е
, F
или G
есть также подходящие для Python:
if x in [a,b,c,d,e,f,g]:
Но если какая-то строка х
содержит А
, Б
, С
, Д
, Е
, F
или Г
кажется неуклюжим:
if a in x or b in x or c in x or d in x or e in x or f in x or g in x
Есть ли более обновления метод проверки, если строка х содержит элемент списка?
Я знаю, что это тривиально, чтобы написать это сам с помощью петли или с использованием regex:
re.search('(dog|cat|bird|mouse|elephant|pig|cow)', x)
но мне было интересно, если там было чище без регулярных выражений.
В подходящие для Python подход можно было бы использовать любой()
:
if any(s in x for s in (a,b,c,d,e,f,g)):
Из связанного документации:
любой
(итерируемый)
возвратите true, если любой элемент метод - это правда. Если итератор пуст, возвращает значение false. Эквивалентно:
деф любой(повторяемое): для элемента в массиве: если элемент: возвращает true возвращает false
Также обратите внимание, что я'вэ используется кортеж вместо списка здесь. Если ценности ваши " а " - "г", определены заранее, тогда Кортеж будет действительно популярен. См.: несколько кортежей более эффективны, чем списки в Python?
Немного опоздала на вечеринку, но
not frozenset(x).isdisjoint(frozenset(y))
будет работать, и может быть быстрее (алгоритмически, но не для небольших тестовых случаев).