リスト内を検索して該当するインデックスを全て返す (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)
関連記事