2017-06-30 12 views
2

のためのリストのインデックスを見つけるために、どのように私はこのリストに同一の項目

list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'] 

を持っているしかし、それだけで最初のインデックスを返します。両方のインデックスを返す方法はありますか?

答えて

3

あなたはこれを行うことができます:等価です

>>> list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'] 
>>> [index for index, value in enumerate(list_) if value == 'e'] 

の:

list_ = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'] 

result = [] 
for index, value in enumerate(list_): 
    if value == 'e:' 
     result.append(index) 

前者の例(リストの内包)はよりコンパクトで高速であります明示的なforループよりも優れています。これは、リスト内で.append()を呼び出すと、リストオブジェクトが新しい要素のスペースを個別に増やすようにリストオブジェクトを拡大するためです。一方、リスト内包はすべての要素を最初に集めてから、一度に要素に合わせてリストを作成します。

def get_all_indexes(list_, element): 
    return [index for index, value in enumerate(list_) if value == element] 

print(get_all_indexes(['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'], 'e')) 
2

私はリスト内包を使用して、このような何かをしたい、変数名としてlistを使用しないように注意してくださいしてください

>>> myList = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']  
>>> [i for i, v in enumerate(myList) if v == "e"] 
[5, 8] 
1

またはあなたがそれを得るためにそれをしたい場合は、

import numpy as np 
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e'] 
np.where(np.array(list)=="e") 

をnumpyの使用することができます要素は、あなたが変更される可能性があるため、インデックスをしたい、より一般的な機能、として

リストを使用することができます

np.where(np.array(list)=="e")[0].tolist() 

私は強くあなたの変数のようなリストのようなキーワードを呼び出さないことをお勧めします、dict?単にmy_listまたは別の名前と呼ぶ

関連する問題