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

Pythonで一方のリストの各要素が別のリストのどこにあるかインデックスを取得する方法

あるリストに含まれる各要素が、別のリストのどの位置(インデックス)に存在するのかを取得したい場合、シンプルな反復処理と enumerate 関数、さらに setdefault メソッドを組み合わせることで実現できます。

加えて、リスト内包表記と get メソッドも活用することで、簡潔かつ効率的に処理を行えます。

サンプルコード

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

my_list = [14, 52, 23, 47, 18, 23, 12, 54, 43, 22, 28, 13]

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

my_list_2 = [17, 52, 13]
print("The second list is :")
print(my_list_2)

element_indices = dict()
for index, value in enumerate(my_list):
   element_indices.setdefault(value, []).append(index)

my_result = [element_indices.get(index, [None]) for index in my_list_2]

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

出力結果

The list is :
[14, 52, 23, 47, 18, 23, 12, 54, 43, 22, 28, 13]
The second list is :
[17, 52, 13]
The result is :
[[None], [1], [11]]

解説

  • まず、整数のリストを定義し、コンソールに表示します。

  • 次に、検索対象となるもう一つの整数のリストを定義し、同様に表示します。

  • 結果を格納するための空の辞書を作成します。

  • enumerate を使って最初のリストを反復処理し、各要素とそのインデックスを同時に取得します。

  • setdefault メソッドにより、キーが存在しない場合には空のリストを初期値として設定しながら、要素ごとのインデックスを登録していきます。

  • これにより、「要素の値 → 出現位置のリスト」という対応関係を持つ辞書が完成します。

  • その後、リスト内包表記で2つ目のリストの各要素を順に取り出し、get メソッドを使って対応するインデックスを取得します。該当する要素が存在しない場合は [None] が返されるようになっています。

  • 取得した結果はリストとしてまとめられ、変数に代入されます。

  • 最後に、この結果リストをコンソールに出力して完了です。

この手法を使えば、重複する要素が複数回出現する場合でも、すべての出現位置を正確に把握できるため、データの照合や検索処理などに幅広く応用できます。

  1. Pythonでリストの最後から2番目の要素を取得する方法

    Pythonでリストの最後から2番目の要素を取得するには?Pythonでは、リストをはじめとするシーケンス型オブジェクトに対して、インデックス(添字)を使って各要素にアクセスできます。通常は0から始まるインデックスで要素を参照しますが、負の数を指定した場合は、リストの末尾から数えた位置として解釈されるのが特徴です。したがって、リストの最後から2番目の要素を取得したい場合は、インデックスとして -2 を指定します。>>> L1 = [1, 2, 3, 4, 5]>>> print(L1[-2])4この例では、リスト L1 の末尾から数えて2番目の要素である「4

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

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