Pythonのリストでは、特定の要素が複数回出現する場合があります。そのすべての出現箇所のインデックスを取得する方法を説明します。
リスト内包表記とenumerate関数を使用する
Pythonのリスト内包表記とenumerate関数を使用して、リスト内の特定の要素のすべてのインデックスを取得することができます。以下にコードの例を示します。
indices = [i for i, x in enumerate(my_list) if x == "whatever"]
このコードでは、enumerate(my_list)
がリストの各要素に対して(index, item)
のペアを生成します。ループ変数i, x
を使用して、これらのペアをインデックスi
とリスト項目x
に分解します。そして、x
が検索条件に一致するすべての要素をフィルタリングし、それらの要素のインデックスi
を選択します。
NumPyを使用する
リストに直接適用する解決策ではないですが、この種の問題に対してNumPyは非常に優れています。以下にコードの例を示します。
import numpy as np
values = np.array([1,2,3,1,2,4,5,6,3,2,1])
searchval = 3
ii = np.where(values == searchval)[0]
このコードは、リスト(配列)の要素数が多い場合、他の解決策よりも大幅に高速です。
以上の方法を使用して、Pythonのリスト内の特定の要素のすべてのインデックスを取得することができます。適切な方法を選択することで、コードのパフォーマンスと効率を向上させることができます。