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

Python:指定したインデックスで同じ要素を持つ行列から行を抽出して出力する方法

指定されたインデックスの位置で同じ要素を持つ行列(マトリックス)から行を出力したい場合には、リスト内包表記all() 関数を組み合わせるのが効果的です。

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

サンプルコード

my_list = [[7745, 6755, 87, 978], [727, 927, 845], [192, 997, 49], [98, 74, 27]]

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

my_key = 1
print("The key is ")
print(my_key)

my_result = [element for element in my_list if all(str(i)[my_key] == str(element[0])[my_key] for i in element)]

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

出力結果

The list is :
[[7745, 6755, 87, 978], [727, 927, 845], [192, 997, 49], [98, 74, 27]]
The key is
1
The result is :
[[7745, 6755, 87, 978], [192, 997, 49]]

処理の流れ・解説

  • まず、リストのリスト(入れ子になったリスト)として行列を定義し、コンソールに表示します。

  • 次に、比較対象となるインデックス(キー)の値を定義し、コンソールに表示します。

  • リスト内包表記を使って各行を反復処理し、all() 関数によって、その行内のすべての要素を文字列化した際に指定インデックスの文字が先頭要素と一致するかどうかを判定します。

  • 条件を満たす行だけが新しいリストとしてまとめられ、変数に代入されます。

  • 最後に、その結果をコンソールに出力します。

ポイント解説

このコードの鍵となるのは str(i)[my_key] の部分です。各数値を str() で文字列に変換し、その my_key 番目の文字を取り出すことで、「桁」レベルでの比較を実現しています。上記の例では my_key = 1 なので、各数値の 2 桁目の数字が行内のすべての要素で一致している行のみが抽出されます。

all() は、渡されたイテラブルのすべての要素が真である場合に True を返す組み込み関数です。これにより、行内の全要素が条件を満たしているかどうかを簡潔に判定できます。

  1. Pythonでリストの最後の要素を取得する方法【初心者向け】

    Pythonでリストの最後の要素を取得する基本方法 Pythonでは、リストをはじめとするシーケンス型オブジェクトに対して、インデックス(添字)を使って任意の要素にアクセスできます。インデックスは0から始まるため、最初の要素は「0」、2番目の要素は「1」というように指定します。 ここで重要になるのが負のインデックスです。負の数を指定すると、リストの末尾から逆順に数えて要素を取得できます。したがって、リストの最後の要素を取得したい場合は、インデックスとして -1 を指定するだけでOKです。 >>> L1 = [1, 2, 3, 4, 5] >>> print(

  2. Pythonでリスト内の要素のインデックスを取得する方法

    index()メソッドで最初の出現位置を取得する リスト(文字列やタプルなど、他のシーケンス型でも同様)に用意されている index() メソッドを使うと、特定の要素が最初に出現する位置(インデックス)を簡単に見つけることができます。 >>> L1=[a, b, c, a, x] >>> L1 [a, b, c, a, x] >>> L1.index(a) 0 この例では、リスト L1 の中で a が最初に出現するのはインデックス 0 の位置であるため、0 が返されます。なお、指定した要素がリスト内に存在しない場合は ValueError