とりあえず思い付いたものを。そんなに簡潔にはなってないですね。
Python
1>>> colors = ['red', 'blue', 'yellow',]
2>>> any(color in text for color in colors)
3True
正規表現を使う方法もありますが、個人的には好みではありません。
他の方法で充分記述できるのに、正規表現を持ち出すのが大げさに思えるからです。
Python
1>>> import re
2>>> bool(re.search(r'red|blue|yellow', text))
3True
ただ、例えば redact とか predict も引っかかるのが問題です。
- 空白で分割して、単語を調べる?
- 正規表現の単語境界を活用する?
解法は自由です。
後者についてはKojiDoiさんの回答に詳しいので、私は前者を書いてみます。
Python
1>>>
2>>> textlist = ["I saw a red apple", "I saw an apple", "I saw a reddish apple"] # お借りしました
3>>> colors = ['red', 'blue', 'yellow',]
4>>>
5>>> for text in textlist:
6... words = text.lower().split()
7... if any(word in colors for word in words):
8... print('colors')
9... else:
10... print('not colors')
11...
12colors
13not colors
14not colors
15
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。