Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで他のリストをもとに指定文字数以上の文字を含む文字列を抽出するプログラム


ある文字列のリストから、「別の文字リストに含まれる文字を指定した個数以上持つ文字列」だけを抽出したい場合、Pythonではリスト内包表記を使うことで簡潔に実装できます。ループや条件分岐を何行も書く必要がなく、処理の意図がひと目でわかるのが特徴です。

サンプルコード

以下に具体的な実装例を示します。

my_list = ["Python", "is", "fun", "to", "learn"]

print("The list is :")
print(my_list)

my_char_list = ['e', 't', 's', 'm', 'n']

my_key = 2
print("The value of key is ")
print(my_key)

my_result = [element for element in my_list if sum(ch in my_char_list for ch in element) >= my_key]

print("The resultant list is :")
print(my_result)

実行結果

The list is :
['Python', 'is', 'fun', 'to', 'learn']
The value of key is
2
The resultant list is :
['Python', 'learn']

コードの解説

  • まず、対象となる文字列のリストを定義し、コンソールに表示します。

  • 次に、抽出条件として使う文字のリスト(my_char_list)を定義します。

  • しきい値となる key の値を定義し、こちらもコンソールに表示します。

  • リスト内包表記で元のリストの各要素を順に走査し、sum() を使って各文字列に my_char_list の文字がいくつ含まれているかを集計します。

  • この集計値を key の値と比較します。

  • 集計値が key 以上であった場合、その文字列は新しいリストに格納され、変数 my_result に代入されます。

  • 最後に、結果として得られたリストをコンソールに出力します。

ポイントと補足

この例では、"Python"(P・y・t・h・o・n のうち t・h・o・n が該当)と "learn"(e・a・r・n のうち e・n が該当)が条件を満たしているため、結果にはこの2つの文字列のみが残ります。

なお、my_char_listset に変換しておくと、要素の存在確認が高速になるため、リストや文字列が大きくなるケースでは処理速度の向上が期待できます。

  1. Pythonでリストから重複する要素を抽出して表示する方法

    この記事では、数値のリストの中から重複している要素(2回以上出現する、リスト内で一意ではない要素)をすべて抽出して表示するPythonプログラムを解説します。実行例入力: given_list = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] 出力: desired_output = [3, 9, 12] 入力: given_list = [-27, 4, 29, -27, -2, -99, 123, 499, -99] 出力: desired_output = [-27, -99]負の数値が含まれる場合でも正しく動作することがわかります。重複要素を検出する

  2. 【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

    リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう