AND検索
検索文字列はリストで渡す
検索文字列が対象文字列にあったら1,なければ0として結果リストにする
全て1であれば(全要素掛け合わせて1であれば)True
code
from functools import reduce
def search_and(search_words, target_string):
result_list = [ 1 if i in target_string else 0 for i in search_words ]
result = reduce(lambda x, y: x*y, result_list)
return True if result == 1 else False
実行結果
>>> print(search_and(['a','b'], 'abcde'))
True
>>> print(search_and(['a','b','f'], 'abcde'))
False
OR検索
ほぼ同じ。最後に全て0であれば(全要素足し合わせて0であれば)False
code
from functools import reduce
def search_or(search_words, target_string):
result_list = [ 1 if i in target_string else 0 for i in search_words ]
result = reduce(lambda x, y: x+y, result_list)
return False if result == 0 else True
実行結果
>>> print(search_or(['a','b','f'], 'abcde'))
True
>>> print(search_or(['f','g','h'], 'abcde'))
False
+α
検索自体はinでやってるので、高度なことをしたければfindやre.matchとかでどうぞ。
どうでもいいやつ
python3この頃使い始めたけど、reduceはモジュール読み込まないといけなくなったのか。