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

プレフィックス(接頭辞)のリストに一致する文字列を抽出して出力するPythonプログラム

プレフィックス(接頭辞)のリストに基づいて文字列を出力したい場合、リスト内包表記any関数、そしてstartswithメソッドを組み合わせると、簡潔かつ効率的に実現できます。本記事では、具体的なコード例とともにその仕組みをわかりやすく解説します。

コード例

以下に実際の実装例を示します。

my_list = ["streek", "greet", "meet", "leeks", "mean"]

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

prefix_list = ["st", "ge", "me", "re"]
print("The prefix list is : ")
print(prefix_list)

my_result = [element for element in my_list if any(element.startswith(ele) for ele in prefix_list)]

print("The result is :")
print(my_result)

出力結果

The list is :
['streek', 'greet', 'meet', 'leeks', 'mean']
The prefix list is :
['st', 'ge', 'me', 're']
The result is :
['streek', 'meet', 'mean']

処理の流れと解説

  • まず、対象となる文字列のリスト「my_list」を定義し、コンソールに表示します。
  • 次に、プレフィックスとして使用する文字列のリスト「prefix_list」を定義し、こちらもコンソールに表示します。
  • リスト内包表記を使って「my_list」の各要素を順番に取り出し、any関数によって「prefix_list」内のいずれかのプレフィックスで始まるかどうかをstartswithメソッドで判定します。
  • 条件に一致した要素のみが新しいリストに格納されます。
  • この結果は変数「my_result」に代入されます。
  • 最後に、結果をコンソールへ出力します。

ポイント:any関数とジェネレータ式の組み合わせ

any関数は引数に渡されたイテラブルの中に一つでも真となる要素があればTrueを返します。ここではジェネレータ式と組み合わせることで、すべてのプレフィックスを事前に展開することなく、条件に合致した時点で評価を終了できるため、メモリ効率にも優れています。

なお、startswithメソッドはタプルを引数に取ることができるため、次のように書き換えることも可能です。

my_result = [element for element in my_list if element.startswith(tuple(prefix_list))]

どちらの方法でも同じ結果が得られますので、用途や可読性に応じて使い分けるとよいでしょう。

  1. リスト内の偶数を出力するPythonプログラム|3つの実装方法を解説

    本記事では、リスト(イテラブル)に含まれる偶数だけを抽出して出力するPythonプログラムの解決策とアプローチについて学びます。初心者にもわかりやすいよう、3つの異なる手法をコード例とともに紹介します。 問題の定義 リスト型のイテラブルが与えられたとき、その中に含まれるすべての偶数を出力することが求められます。 偶数かどうかの判定は、数値を2で割った余り(剰余)が0になるかどうかで確認できます。Pythonでは % 演算子を使うことで簡単に判定可能です。 ここでは、以下の3つのアプローチについて順番に見ていきましょう。 方法1:拡張forループを使用する 最も基本的な方法は、forループでリス

  2. Pythonでリストのすべてのサブリストを生成して出力する方法

    リストが与えられたとき、そのリストに含まれるすべてのサブリスト(部分リスト)を生成して出力するプログラムを紹介します。要素数 n のリストの場合、空のリストを含めるとサブリストの総数は n×(n+1)/2+1 個になります。 実行例 入力 : list = [1, 2, 3] 出力 : [], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] アルゴリズム 考え方はシンプルです。開始位置 i と終了位置 j の組み合わせをすべて試し、スライスで部分リストを取り出します。 ステップ1 : 対象となるリストを用意します。 ステップ2 : 結果を格納するため、最