Python リストに文字列が含まれているかどうかを確認する
-
for
ループを使用して、Python リスト内の特定の文字列をチェックする - リスト内包表記を使用して、Python リスト内の特定の文字列を確認する
-
filter()
関数を使用して、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_list
に a
が含まれる文字列を検索しています。
他の関数またはループを使用して同じコードを作成すると、実装に必要なコードが増えるため、時間がかかりますが、リスト内包表記によってその問題が解決されることに注意してください。
リスト内包表記を使用して、複数の特定の値を含む文字列を見つけることもできます。つまり、2つの内包表記を組み合わせることで、py_list
内の a
と b
を含む文字列を見つけることができます。
例えば、
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 で文字列からコンマを削除する
- Python で文字列を変数名に変換する
- Python 文字列の空白を削除する方法
- Python で文字列から数字を抽出する
- Python が文字列を日時 datetime に変換する方法
- Python 2 および 3 で文字列を小文字に変換する方法