Aquí hay un par de formas alternativas de hacerlo, que pueden ser más rápido o más conveniente que la respuesta de KennyTM, dependiendo del contexto.
1) utiliza una expresión regular:
import re
words_re = re.compile("|".join(list_of_words))
if words_re.search('some one long two phrase three'):
# do logic you want to perform
2) Se podría utilizar conjuntos si desea hacer coincidir palabras completas, por ejemplo usted no quiere encontrar la palabra "the" en la frase "los teoremas son teóricos":
word_set = set(list_of_words)
phrase_set = set('some one long two phrase three'.split())
if word_set.intersection(phrase_set):
# do stuff
Por supuesto, también puede hacer toda la palabra partidos con expresiones regulares utilizando el token "\ b".
El rendimiento de estas y la solución de Kenny dependerán de varios factores, como por ejemplo, cuánto tiempo son la lista de palabras y la cadena de frases, y con qué frecuencia cambian. Si el rendimiento no es un problema, entonces elija el más simple, que probablemente sea el de Kenny.
el uso de "lista" como nombre de variable se meterte en problemas, como oculta la "lista" de Python –
@Fabian, sí, claro. Es solo por muestra. – Ockonal
Es mejor preferir la legibilidad sobre el número de líneas de código. En este caso 'any' es un ajuste perfecto, pero a veces usar más líneas es mejor que un liner –