Qui ci sono un paio di modi alternativi di farlo, che possono essere più veloce o più adatto di risposta di KennyTM, a seconda del contesto.
1) usare un'espressione regolare:
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) Si potrebbe usare set se si desidera far corrispondere le parole intere, per esempio non si vuole trovare la parola "il" nella frase "li teoremi sono teorica":
word_set = set(list_of_words)
phrase_set = set('some one long two phrase three'.split())
if word_set.intersection(phrase_set):
# do stuff
Naturalmente si può anche fare parola intera partite con espressioni regolari usando il token "\ b".
Le prestazioni di queste e della soluzione di Kenny dipendono da diversi fattori, ad esempio la lunghezza dell'elenco di parole e della stringa di frasi e la frequenza con cui cambiano. Se le prestazioni non sono un problema, andate per il più semplice, che è probabilmente quello di Kenny.
fonte
2010-07-17 13:30:55
Utilizzando "lista" come un nome di variabile ti porterà nei guai, come nasconde la "lista" python –
@Fabian, sì, certo. È solo per esempio. – Ockonal
È preferibile preferire la lettura al numero di righe di codice. In questo caso "any" è perfetto, ma a volte usare più linee è meglio di un solo liner –