Pythonにはリスト内の要素を検索するための多くの方法がありますが、その1つがindex
関数です。この関数は、リスト内の特定の要素の位置(インデックス)を取得するのに役立ちます。
ここでは、PythonにおけるList型の要素に対して任意の要素の位置を探索する方法(index()メソッド)について解説しています。
この記事の対象
index()の型
変数名.index(a)
index()メソッドは、Listにおける任意の「a」がどの位置に存在するか探索するものです。
index()を用いた使用例
test = [55,70,90]
print(test.index(70))
結果
1
この例では、値「70」がリストの1番目(0から数える)にあるので、1
が出力されます。
注意点:存在しない要素はエラーになる!
リストに存在しない値を index()
で検索すると、ValueError
というエラーが発生します。エラーを防ぐために、事前に要素の存在を確認することで回避できます。
test = [10, 20, 30, 40, 50]
element = 42
if element in test:
index = test.index(element)
print("要素", element, "のインデックス:", index)
else:
print("要素", element, "はリスト内に存在しません。")
上記は、探索する要素が無い場合にエラーにならないように回避する一例になります。
結果
要素 42 はリスト内に存在しません。
一致する要素が複数ある場合
index()
は 最初に見つかった値の位置だけ を返します。
test = [10, 20, 30, 20, 40]
print(test.index(20)) # 出力:1(最初に見つかった 20 の位置)
したがって、複数の要素を検索し、それらのインデックスをすべて取得したい場合は、繰り返しを使用することで取得できます。
全部の位置を取得したいときは?
以下のように リスト内包表記+enumerate()
を使います。
test = [10, 20, 30, 40, 20, 50, 60]
element = 20
indices = [i for i, x in enumerate(test) if x == element]
print("要素", element, "のインデックス:", indices)
上記では、要素20のすべてのインデックスをリストとして取得しています。
結果
要素 20 のインデックス: [1, 4]
応用:部分的に検索したいとき(開始・終了位置を指定)
index()
には 検索開始位置・終了位置 を追加で指定することができます。
test = [10, 20, 30, 20, 40]
print(test.index(20, 2)) # 出力:3(インデックス2から検索開始)
結果
3
まとめ
機能 | 説明 |
---|---|
index(x) | リスト内の「x」の最初のインデックスを返す |
存在しない値 | ValueError が出る → in で事前確認が必要 |
複数一致する場合 | 最初のインデックスのみ返される |
すべての位置を知りたい場合 | enumerate() +内包表記を使う |
範囲指定したい場合 | index(x, start, end) で可能 |
index
関数は、リスト内で要素を検索するための便利なツールです。要素が見つからない場合はエラーを発生させるため、要素の存在を確認することが重要です。また、複数の一致する要素を検索する場合は、繰り返しを使用してインデックスを取得できます。適切に使用することで、リスト内での要素の位置を効率的に特定できます。