のためのリストのインデックスを見つけるために、どのように私はこのリストに同一の項目
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
を持っているしかし、それだけで最初のインデックスを返します。両方のインデックスを返す方法はありますか?
のためのリストのインデックスを見つけるために、どのように私はこのリストに同一の項目
list = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
を持っているしかし、それだけで最初のインデックスを返します。両方のインデックスを返す方法はありますか?
あなたはこれを行うことができます:等価です
>>> 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'))
私はリスト内包を使用して、このような何かをしたい、変数名としてlist
を使用しないように注意してくださいしてください
>>> myList = ['c', 'h', 'a', 'l', 'l', 'e', 'n', 'g', 'e']
>>> [i for i, v in enumerate(myList) if v == "e"]
[5, 8]
またはあなたがそれを得るためにそれをしたい場合は、
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または別の名前と呼ぶ