Поиск слов из списка в строке Python

Есть список слов, вида:

animalslist=['кот', 'собака', 'олень', 'тюлень']

длинною в 600+ слов

Имеется строка, введённая пользователем, вида:

message='Какой либо текст олень какой либо текст'

Как эффективнее всего можно узнать, имеются ли в строке слова из списка

Длина строки заранее не известна


Ответы (3 шт):

Автор решения: Sergey Gornostaev
if set(animalslist) & set(message.split()):
    print('В строке есть слова из списка')
→ Ссылка
Автор решения: vadim vaduxa
animalslist = ['кот', 'собака', 'олень', 'тюлень']
message = 'Какой либо текст олень какой либо кот текст олень'.split()
sm = set(message)

# ['олень', 'кот']
print([a for a in sm if a in animalslist])

# ['кот=1', 'олень=2']
print([f'{a}={c}' for a, c in ([a, message.count(a)] for a in animalslist if a in sm) if c])
→ Ссылка
Автор решения: Serzhev

Должно немного быстрее (если время в вашем случаем можно принять за критерий эффективности) работать, когда так (крутой вариант от vadim vaduxa):

animalslist = ['кот', 'собака', 'олень', 'тюлень']
message = 'Какой либо текст олень какой либо кот текст олень'.split()
sm = set(message)

print([f'{word} == {message.count(word)}' for word in animalslist if word in sm])
# ['кот == 1', 'олень == 2']
→ Ссылка