python リスト内のある値の最初のインデックスと最後のインデックスを求める

リスト内のある値の最初のインデックスと最後のインデックスを求める方法を説明します。
本記事の方法により、例えば、下記が可能になります。

l = [1, 2, 1, 2]の時、1(ある値)の最初のインデックスである0、最後のインデックスである2を求める。

方法

l = [1, 2, 1, 2]について、1の最初のインデックスと最後のインデックスを求めます。

l = [1, 2, 1, 2]
searchVal = 1
firstIndex = l.index(searchVal)
lastIndex = len(l) - 1 - l[::-1].index(searchVal)
print(firstIndex, lastIndex)
"""出力
0 2
"""
  • firstIndex = l.index(searchVal)により最初のインデックスを求めています。
  • lastIndex = len(l) – 1 – l[::-1].index(searchVal)により最後のインデックスを求めています。
    • l[::-1].index(searchVal)では、searchValがリストの右端から何番目のインデックスであるかを求めています(*1)。右から1番目(右端のインデックスは右から0番目とする)のインデックスなので、1を返します。
    • len(l) – 1の-1は補正のために必要です。インデックスは0から開始するので補正が必要です。

(*1)リスト逆順前にインデックス0の1を”最初の1″、インデックス2の1を”最後の1″と呼びこととします。つまり、l = [1(最初の1), 2, 1(最後の1), 2] です。l[::-1]によりリストを逆順([2, 1, 2, 1])にし、”最後の1″の左からのインデックスを求めます。これは、リストを逆順にする前の”最後の1″の右からのインデックスと等しいです。

リンク

Finding first and last index of some value in a list in Python – Stack Overflow
本記事で紹介した方法以外の方法がわかります。

コメント

タイトルとURLをコピーしました