indexメソッドで複数個インデックスを返す方法
pythonでindexメソッドというものが存在する。このメソッドは最初の検索文字にヒットしたインデックスを返すというものだが、全てのインデックスを返すことはできなさそう。検索してもなぜか出てこない(検索の仕方が悪いのかもしれないが)。そこで自分で検索した文字列にヒットするインデックスを複数個返すindexメソッドの拡張版をざっと書いてみた。
index_multi.py
def index_Multi(List,liter):
#Listはリスト本体・literは検索したい文字
index_L = []
for val in range(0,len(List)):
if liter == List[val]:
index_L.append(val)
return index_L
Listは検索したいリスト群、literは検索したい文字列を引数として与えてやると、検索したい文字列と一致したインデックスが返ってくる。
##テスト
test_Lに入っている要素から500のインデックスを抽出する。
index_test.py
def index_Multi(List,liter):
#Listはリスト本体・literは検索したい文字
index_L = []
for val in range(0,len(List)):
if liter == List[val]:
index_L.append(val)
return index_L
if __name__ == "__main__":
test_L = [500,0,0,0,0,0,0,500,200]
print index_Multi(test_L,500)
実行結果
[0, 7]
スマートなやり方やメソッドがあった場合は本記事を削除させていただきます。
##スマートな方法
追記
ご指摘いただきました。この方法を使うと一行で表現できます。
index_test.py
if __name__ == "__main__":
test_L = [500,0,0,0,0,0,0,500,200]
index_num = [n for n, v in enumerate(test_L) if v == 500]
print index_num