Pythonでリスト内の任意の文字列にサフィックス(特定の文字列)が一致するか確認する方法
プログラミングでは、特定の単語や文字列がリストの中に存在するかどうかを調べたい場面がよくあります。データの前処理やビジネスロジックの実装において、こうした存在チェックは非常に重要なステップとなります。
本記事では、複数の文字列を格納したリストの中に、指定した文字列(サフィックス)が含まれているかどうかを確認する方法を、any()関数とfilter()関数の2つのアプローチから解説します。
any()関数を使う方法
Pythonのany()関数は、イテラブル(反復可能オブジェクト)内の要素のいずれかひとつでも条件を満たせばTrueを返し、ひとつも満たさなければFalseを返します。この特性を利用することで、リスト内の各要素に対して指定した文字列が含まれるかどうかを簡潔にチェックできます。
以下の例では、ジェネレータ式とif文を組み合わせて、文字列の有無に応じて異なるメッセージを出力しています。
コード例
# 対象のリスト
lstA = ["Tue", "Fri", "Sun"]
# チェックする文字列
str = 'Sun'
# any()を使用して存在確認
if any(str in i for i in lstA):
print(str, "is present in given list.")
else:
print(str, "is absent from the given list.")実行結果
Sun is present in given list.
この方法はコードが短く読みやすいのが特徴で、条件を満たす要素が見つかった時点で評価を終了するため、大きなリストでも効率的に動作します。
filter()関数を使う方法
filter()関数は、指定した関数によるテストに合格した要素だけを抽出し、イテレータとして返します。ここでは、ラムダ式で「各要素に指定した文字列が含まれるか」を判定し、その結果をlist()でリスト化して長さを確認します。リストの長さが0より大きければ文字列は存在し、0であれば存在しないと判断できます。
コード例
# 対象のリスト
lstA = ["Tue", "Fri", "Sun"]
# チェックする文字列
str = 'Wed'
# filter()を使用して存在確認
if len(list(filter(lambda x: str in x, lstA))) != 0:
print(str, "is present in given list.")
else:
print(str, "is absent from the given list.")実行結果
Wed is absent from the given list.
この方法では、条件に一致した要素自体も取得できるため、「存在するかどうか」だけでなく「どの要素が一致したのか」を後続の処理で利用したい場合に便利です。
補足:endswith()で厳密なサフィックス判定を行う
上記の例は部分一致(含まれるかどうか)のチェックですが、「末尾が指定したサフィックスと完全に一致するか」を厳密に判定したい場合は、文字列メソッドのendswith()を組み合わせるとより意図が明確になります。
lstA = ["Tue", "Fri", "Sun"]
suffix = 'un'
if any(i.endswith(suffix) for i in lstA):
print(f"サフィックス '{suffix}' に一致する要素があります。")
else:
print(f"サフィックス '{suffix}' に一致する要素はありません。")実行結果
サフィックス 'un' に一致する要素があります。
まとめ
リスト内の文字列に特定の文字列やサフィックスが含まれるかを確認するには、シンプルで高速なany()関数が最も推奨される方法です。一致した要素を取り出したい場合はfilter()関数が、厳密な末尾一致が必要な場合はendswith()がそれぞれ適しています。用途に応じて使い分けることで、より読みやすく効率的なPythonコードを書くことができます。
-
指定された文字列がキーワードであるかどうかを確認するPythonプログラム
この記事では、指定された文字列がPythonのキーワード(予約語)であるかどうかを判定する方法について解説します。問題の概要与えられた文字列が、Pythonにおけるキーワードであるかどうかを確認する必要があります。キーワードとは、言語によって特別な用途のために予約されている単語であり、変数名や関数名などの識別子として使用することはできません。例えば「if」「for」「while」「def」などはすべてキーワードです。これらの名前を変数に使おうとすると、構文エラーが発生します。解決策:keywordモジュールの活用Pythonには標準ライブラリとしてkeywordモジュールが用意されており、これ
-
Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法
本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列