ユーニックス総合研究所

  • home
  • archives
  • python-index

Pythonのindex()メソッドの使い方をわかりやすく解説

  • 作成日: 2021-06-28
  • 更新日: 2023-12-24
  • カテゴリ: Python

Pythonのindex()メソッドの使い方

Pythonにはリストやタプルなどのデータ構造があります。
これらのデータ型はindex()というデータの中から指定した要素の添え字を返すメソッドを持っています。

結論から言うとindex()メソッドは↓のように使います。

l = [1, 2, 3]  
idx = l.index(2)  
print(idx)  
# 1  

t = (1, 2, 3)  
idx = t.index(2)  
print(idx)  
# 1  

この記事ではindex()メソッドの具体的な使い方について解説します。
具体的には↓を見ていきます。

  • index()の構造
  • index()の送出する例外
  • 指定した要素の添え字を得る
  • 指定した範囲内で要素の添え字を得る
  • 最後尾の要素の添え字を得る
  • 数列から添え字を得る

index()の構造

index()は↓のような構造を持っています。

list.index(x[, start[, end]])  

第1引数のxには検索したい要素を指定します。
第2引数と第3引数はオプションです。
第2引数と第3引数はスライスのように機能します。
第2引数のstartには検索の開始点、第3引数のendには検索の終了点を指定します。

index()xと等しい要素をリストやタプルから検索します。
その結果を0から始まる添え字として返します。
つまりindex()に要素を指定すると、その要素のリストの中の位置がわかります。

index()はリストやタプルの中にxが見つからなかった場合は例外ValueErrorを送出します。

index()の送出する例外

index()は指定した要素が見つからなかった場合は例外ValueErrorを送出します。

l = [1, 2, 3]  
l.index(4)  
$ python error.py  
Traceback (most recent call last):  
  File "/to/idx/err.py", line 2, in <module>  
    l.index(4)  
ValueError: 4 is not in list  

↑のようにコードを実行すると例外が送出されます。
ValueError: 4 is not in list」、つまり「4はリストの中にありません」というエラーです。

🦝 < 探し物は4ですか

ですのでindex()を使う場合は例外が発生する可能性を考えてコードを書く必要があります。

l = [1, 2, 3]  

try:  
    l.index(4)  
except ValueError as e:  
    print(e)  
    # 4 is not in list  

指定した要素の添え字を得る

index()の第1引数に検索したい要素を指定すると、その要素のインデックス(添え字)が得られます。

l = [1, 2, 3]  
idx = l.index(2)  
print(idx)  
# 1  

t = (1, 2, 3)  
idx = t.index(2)  
print(idx)  
# 1  

index()はリストやタプルの先頭から検索します。
そのため要素が重複していた場合は、最初に見つかった要素の添え字を返します。

l = [1, 2, 2, 3]  
idx = l.index(2)  
print(idx)  
# 1  

指定した範囲内で要素の添え字を得る

index()の第2引数と第3引数に開始点と終了点を指定すると、その範囲内で検索が行われます。

l = [1, 2, 3, 1, 2, 3]  
idx = l.index(2, 2, 5)  
print(idx)  
# 4  

第3引数のendは「以下」ではなく「より下」になります。
そのためend自体の値は範囲に含まれません。
↑の例だとstart2end5なので、範囲は「2以上5より下」になります。
この値は添え字と同じで0から始まります。
つまり1を指定した場合はリストの先頭から2つ目の要素になります。

最後尾の要素の添え字を得る

リストやタプルの最後尾の要素の添え字を得たい場合は↓のようにします。

l = [1, 2, 3]  
idx = l.index(l[-1])  
print(idx)  
# 2  

ただ、↑の方法だと要素が重複していた場合に正しく働きません↓。

l = [1, 3, 2, 3]  
idx = l.index(l[-1])  
print(idx)  
# 1  

ですのでやはりlen()で最後の添え字を得る方法が一番安全かと思います。

l = [1, 2, 3]  
idx = len(l) - 1  
print(idx)  
# 2  

もっとも↑の方法だとidxの値が負数になる可能性があるので、その辺は良い感じにする必要があります。

最小・最大の要素の添え字を得る

組み込み関数のmin()max()を使うとリストやタプルから最小の要素、最大の要素をそれぞれ取得できます。
これを利用して最小・最大の要素の添え字を得ることができます。

l = [4, 8, 2, 6]  
idx = l.index(min(l))  
print(idx)  
# 2  

idx = l.index(max(l))  
print(idx)  
# 1  

数列から添え字を得る

range()を使うと数列を生成できます。
これを利用して数列内の特定の要素の添え字を得ることができます。

idx = range(100).index(50)  
print(idx)  
# 50  

idx = range(100, 200).index(150)  
print(idx)  
# 50  

おわりに

今回はPythonのindex()メソッドについて見てみました。
特定の要素の添え字を得たい場合はindex()を使えばOKです。

🦝 < 君の添え字は?

🐭 < たぶん3人目