Python:ある文字列リストの部分文字列となっているすべての文字列を検索する方法
文字列のリストの中から、別の文字列リストのいずれかの要素の部分文字列(サブストリング)となっている文字列をすべて検索したい場合、「set」と「list」を組み合わせたリスト内包表記を使うと簡潔かつ効率的に実現できます。
サンプルコード
以下に具体的な実装例を示します。
my_list_1 = ["Hi", "there", "how", "are", "you"]
my_list_2 = ["Hi", "there", "how", "have", "you", 'been']
print("最初のリスト:")
print(my_list_1)
print("2番目のリスト:")
print(my_list_2)
my_result = list(set([elem_1 for subset_1 in my_list_1 for elem_1 in my_list_2 if elem_1 in subset_1]))
print("結果:")
print(my_result)出力結果
最初のリスト: ['Hi', 'there', 'how', 'are', 'you'] 2番目のリスト: ['Hi', 'there', 'how', 'have', 'you', 'been'] 結果: ['there', 'you', 'Hi', 'how']
コードの解説
まず、文字列のリストを2つ定義し、それぞれの内容をコンソールに表示します。
次に、二重ループ構造のリスト内包表記を使って、my_list_1 の各文字列(subset_1)に対して、my_list_2 の各要素(elem_1)がその部分文字列であるかどうかを「in」演算子で判定します。
条件を満たす要素だけを集めたあと、set() によって重複を除去し、list() で再びリスト形式に変換します。
この結果を変数 my_result に代入し、最後にコンソールへ出力します。
補足ポイント
set は要素の順序を保持しないため、出力されるリストの並び順は実行ごとに異なる場合があります。順序が重要な場合は、set を使わずに dict.fromkeys() やソート処理と組み合わせるとよいでしょう。
-
【Python】リスト内のすべての値が指定した数値より大きいか判定する方法
このチュートリアルでは、リスト内のすべての要素が指定した数値より大きいかどうかを確認する方法を解説します。たとえば、リスト [1, 2, 3, 4, 5] と数値 0 が与えられた場合、リスト内のすべての値が指定値より大きければ True を、そうでなければ False を返します。 とてもシンプルなプログラムなので、3分もかからずに書けます。まずは自分で考えてみてください。解決策が見つからない場合は、以下の手順に沿ってプログラムを作成してみましょう。 プログラムの流れ リストと任意の数値を初期化する リストをループで処理する もし指定値以下の値が見つかったら False を返す ループが最
-
【Python】リスト内のすべての値が指定した値より大きいかどうかを判定する方法
リストと基準値が与えられたとき、リスト内のすべての要素がその基準値より大きいかどうかを判定するプログラムです。条件を満たしていれば「Yes」、一つでも基準値以下の要素が存在すれば「No」を出力します。 実行例 入力 : A=[10, 20, 30, 40, 50] 基準値 = 20 出力 : No 入力 : A=[10, 20, 30, 40, 50] 基準値 = 5 出力 : Yes アルゴリズム ステップ1: ユーザーから入力を受け取り、リストを作成する。 ステップ2: 基準値(チェック用の値)を入力する。 ステップ3: forループでリストを走査する。 ステップ3.1: 各要素を基準