技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

リスト内を検索して該当するインデックスを全て返す (python)

a = [1,2,3,2,3,4,5,4,3,2,1]

こんなデータがあった時、3がある場所を取ってきたいとする。

a.index(3)
# 2

とすると最初のインデックスだけが返ってくる。
希望は全てを取ってくることなので、これではダメ。
じゃあどうするか。

index = []
for i,j in enumerate(a):
    if j==3:
        index.append(i)
# index:[2,4,8]

numpyを使うともっときれいに書ける。そのうえ、巨大なリストだとより高速。

import numpy as np
a = np.array(a)
np.where(a==3)
# array([2,4,8], dtype=int64)

関連記事