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

Python – リスト(マトリックス)内の特定の文字列Kを含む行を見つける方法

Pythonでは、行列(リストのリスト)の中から特定の文字列「K」を含む行を見つけたい場面があります。そのような場合、「enumerate」関数によるインデックス付きの反復処理と、「append」メソッドを組み合わせることで、シンプルかつ効率的に実装できます。

コード例

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

my_list = [["Pyt", "fun", "python"], ["python", "rock"],["Pyt", "for", "CS"], ["Keep", "learning"]]

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

K = "Pyt"

my_result = []

for idx, element in enumerate(my_list):

    if K in element:
        my_result.append(idx)

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

出力

The list is :
[['Pyt', 'fun', 'python'], ['python', 'rock'], ['Pyt', 'for', 'CS'], ['Keep', 'learning']]
The result is :
[0, 2]

解説

  • まず、複数の文字列を要素として持つネストされたリスト(行列)を定義し、コンソールに表示します。

  • 検索対象となる文字列「K」の値を定義します。ここでは「Pyt」としています。

  • 結果を格納するための空のリストを作成します。

  • 「enumerate」関数を使ってリストを反復処理することで、各要素(行)とそのインデックスを同時に取得できます。

  • if文による条件分岐で、各行の中に「K」が含まれているかどうかを判定します。「in」演算子を使えば、リスト内に指定した文字列が存在するかどうかを簡単に確認できます。

  • 条件を満たす場合、その行のインデックスを結果用のリストに追加します。

  • 最後に、結果をコンソールに出力して完了です。この例では、0番目と2番目の行に「Pyt」が含まれているため、[0, 2]が出力されています。

補足:リスト内包表記を使ったより簡潔な書き方

上記のコードは、リスト内包表記を使うことでさらに簡潔に書くこともできます。

my_result = [idx for idx, element in enumerate(my_list) if K in element]

このように1行で同じ結果を得られるため、Pythonらしい書き方として覚えておくと便利です。可読性と処理効率の両面で優れており、実務でも広く使われています。

  1. 【Python】文字列のリストをリストのリスト(ネストしたリスト)に変換する方法

    Pythonでは、文字列として格納された複数のリストを、実際の「リストのリスト」(ネストしたリスト構造)へ変換したい場面があります。例えば、[[0, 1, 2, 3], [Mon, Tue, Wed, Thu]] のような文字列のリストを、各要素が個別のリストになる形に整形するケースです。この記事では、文字列のリストをリストのリストへ変換する代表的な2つの方法を、サンプルコードと実行結果とともにわかりやすく解説します。方法1:strip()とsplit()を組み合わせるstrip()メソッドで文字列の前後にある角括弧 [] を取り除き、その後 split()メソッドでカンマ区切りに分割します。

  2. Pythonで文字列のリストをリストのリスト(ネストしたリスト)に変換する方法

    この記事では、文字列型のデータを含むリストから、リストのリスト(入れ子構造のリスト)を作成する方法を解説します。元のリストには、リスト形式の文字列が要素として格納されており、それらを個々の要素に分解して、真のリスト構造へと変換していきます。strip()とsplit()を使う方法まず紹介するのは、strip()とsplit()の2つのメソッドを組み合わせる方法です。strip()で各文字列から不要な角括弧「[ ]」を取り除き、その後split()を使ってカンマ区切りで要素を分割することで、リストのリストを生成できます。コード例list1 = [ [0, 1, 2, 3],[Mon, Tue,