BBH
-Biz Branding Hub-
投稿日 : 
2019/11/16
更新日 : 
2019/11/16

【python】ある文字列が配列の要素を含むかを判定するサンプル

タイトルだとわかりにくいですが、例えば、以下のようなケースを想定しています。
・配列の中身が['aaa', 'bbb', 'ccc']
・検査対象の文字列がaaaxxxyyyyzzz
・検査対象の文字列が配列の中身の文字列を含むか(この場合aaaを含むのでTrueになってほしい)

そのまま書くなら、forループで回して文字列検査をすればよいです。

python

array = ['aaa', 'bbb', 'ccc'] 
target = 'aaaxxxyyyyzzz'

for a in array:
    if a in target:
        print('文字列を含む')
        break
    else:
        print('含まない')

この場合、aaaが含まれているので1回目のループで文字列を含むと判定され、breakされます。

ただ、この書き方だと少し冗長なので、以下のように書くこともできます。

python

array = ['aaa', 'bbb', 'ccc']
target = 'aaaxxxyyyyzzz'
result = any((a in target) for a in array)
print(result)

any((a in target) for a in array) の部分で、前述のループと同じ判定を行っています。
これだけを見ると複雑ですが、分解してみていけばそこまで難しくはありません。

まず、for a in array の部分で、array配列から要素を1つずつ取って、変数aに入れています。
そして、(a in target) の部分でtargetに変数aが含まれているかを判定しています。
これをarray配列の要素ぶん繰り返します。
any()は、どれか一つでもTrueになればTrueとみなす、という命令になります。
この例だと、targetがarray内のどれか一つの要素の文字列を含んでいればTrueとなります。

逆に、all((a in target) for a in array) と書けば、すべてのループでTrueとなったときのみTrueとみなす、とすることができます。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend