Python リストに文字列が含まれているかどうかを確認する

Hemank Mehtani 2023年1月30日
  1. for ループを使用して、Python リスト内の特定の文字列をチェックする
  2. リスト内包表記を使用して、Python リスト内の特定の文字列を確認する
  3. filter() 関数を使用して、Python リスト内の特定の文字列を取得する
Python リストに文字列が含まれているかどうかを確認する

文字列は文字のシーケンスです。文字列が特定の位置に文字を格納するのと同じように、リストを使用して文字列のコレクションを格納できます。

このチュートリアルでは、Python リストに特定の値を持つ文字列を取得します。

for ループを使用して、Python リスト内の特定の文字列をチェックする

for は、Python でシーケンスを反復処理するために使用されます。

特定の値を含む文字列を取得するための実装を以下の例に示します。

py_list = ["a-1", "b-2", "c-3", "a-4"]
new_list = []
for x in py_list:
    if "a" in x:
        new_list.append(x)
print(new_list)

出力:

['a-1','a-4']

上記のコードでは、if ステートメントを for ループ内で使用して、リスト py_list 内の a を含む文字列を検索しています。これらの特定の文字列を格納するために、new_list という名前の別のリストが作成されます。

リスト内包表記を使用して、Python リスト内の特定の文字列を確認する

リスト内包表記は、既存のリストに基づいて新しいリストを作成する方法です。リストの作成に使用される他の関数やループよりもコンパクトで高速な短い構文を提供します。

例えば、

py_list = ["a-1", "b-2", "c-3", "a-4"]
r = [s for s in py_list if "a" in s]
print(r)

出力:

['a-1', 'a-4']

上記のコードでは、リスト内包表記を使用して、リスト py_lista が含まれる文字列を検索しています。

他の関数またはループを使用して同じコードを作成すると、実装に必要なコードが増えるため、時間がかかりますが、リスト内包表記によってその問題が解決されることに注意してください。

リスト内包表記を使用して、複数の特定の値を含む文字列を見つけることもできます。つまり、2つの内包表記を組み合わせることで、py_list 内の ab を含む文字列を見つけることができます。

例えば、

py_list = ["a-1", "b-2", "c-3", "a-4", "b-8"]
q = ["a", "b"]
r = [s for s in py_list if any(xs in s for xs in q)]
print(r)

出力:

['a-1', 'b-2', 'a-4','b-8']

filter() 関数を使用して、Python リスト内の特定の文字列を取得する

filter() 関数は、各要素が何らかの条件を満たすかどうかをチェックする関数を使用して、指定された反復可能オブジェクトをフィルター処理します。

イテレータ内の各要素にチェックを適用するイテレータを返します。

例えば、

py_lst = ["a-1", "b-2", "c-3", "a-4"]
filter(lambda x: "a" in x, py_lst)
print(filter(lambda x: "a" in x, py_lst))

出力:

<filter object at 0x7fd36c1905e0>

filter() 関数はリストではなくイテレータを返すため、上記の出力はフィルタイテレータタイプのオブジェクトであることに注意してください。

以下のコードに示すように、list() 関数を使用してリストを取得できます。

list(filter(lambda x: "a" in x, py_lst))

出力:

['a-1','a-4']

上記のコードでは、filter() を使用して、リスト py_list 内の特定の値を持つ文字列を検索しました。

関連記事 - Python String

関連記事 - Python List