Pythonのindex関数をリストや文字列の使い方を解説する

スポンサーリンク
スポンサーリンク

イントロダクション

この記事では、Pythonのindex()メソッドを取り上げます。

index()` メソッドは string, list, tuple クラスに対して定義されています。

文字列の場合、このメソッドは与えられた部分文字列が発生する最小のインデックスを返します。

一方、リストとタプルの場合、このメソッドは与えられたオブジェクトが見つかる最小のインデックスを返します。

Pythonのindex()メソッドを使う

上記の定義から、Pythonのindex()メソッドはイテラブルに対してのみ定義されていることが明らかです。

したがって、辞書や集合はインデックスの順序に従わないので、動作しません。

イテラブルの場合、Pythonの index() メソッドを使うための構文は以下のようになります。

iterable.index(sub, start, end)

ここで

  • iterableはリスト、文字列、タプルなどの任意のオブジェクトです。
  • sub は、最小のインデックスを求める反復子内の部分文字列または項目です。
  • start は、検索を開始するインデックスです。指定しない場合,デフォルトで0に設定される。
  • end は,検索が行われる最後のインデックスである.この値は、指定されない場合、イテラブルの長さと同じとみなされる。

注意: もし、オブジェクト sub が start から end インデックスの範囲内で見つからなかった場合、このメソッドは ValueError を発生させます。

Pythonにおけるindex()メソッドの例

index()` メソッドを反復処理に使うための構文がわかったので、いくつかの例でそれを使ってみましょう。

1. リスト index()

index()`メソッドはリストクラスのメンバ関数です。

リスト内の値を検索するために広く使われています。

# initialisation of variables
list1 = [9, 2, 7, 6, 8, 2, 3, 5, 1]
 
 
#index() with list
print("Value 2 first found at index: ", list1.index(2))
print("Value 2 first found at index(within range 4-7) : ", list1.index(2,4,7))

結果は、以下の通りになります。

Value 2 first found at index:  1
Value 2 first found at index(within range 4-7) :  5

上の例では、まずリスト list1 を初期化した。

次に、その中で値2が出現する最小のインデックスを求めようとします。

このプログラムは、開始と終了が指定されていない値2を見つけようとしたとき、インデックス1を返します。

したがって、リスト全体において、 index() メソッドは 2 が存在する最小のインデックスを返すことが明らかです。

次に、指定された範囲(4-7)に対して、このメソッドは値5を返します。

これは、リスト内で2回目に2が発生するインデックスです。

しかし、4-7の範囲では、5番目のインデックスが最小のものです。

注: index() メソッドはタプルでも同じように動作します。

2. 文字列 Python index()

文字列の場合、Pythonのメンバ関数 index() は、指定した部分文字列の先頭が見つかる最小のインデックスを返します。

例を見てみましょう。

# initialisation of string
str1 = "Python Python"
 
#index() with string
print("sub-string 'Py' first found at index: ", str1.index('Py'))
print("sub-string 'Py' first found at index(within range 5-10) : ", str1.index('Py',5,10))

結果は以下の通りです。

sub-string 'Py' first found at index:  0
sub-string 'Py' first found at index(within range 5-10) :  7

ここでは、範囲を指定しない最初の検索で、Pythonの index() メソッドは部分文字列 ‘Py’ を検索しながら 0 を返します。

これは、文字列 string1 の中で ‘Py’ が出現する最小のインデックスであることがわかります。

範囲を指定すると(ここでは5-10)、このメソッドは5番目から10番目のインデックスから’Py’を検索します。

出力から、この関数が部分文字列の先頭を7番目の位置で見つけていることがわかります。

まとめ

どのようなイテレートでも、渡されたサブ(オブジェクト)が与えられたイテレートに見つからない場合、 ValueError が発生することは知っておくとよいでしょう。

この記事では、Pythonの index() メソッドの動作と使用方法について学びました。

このトピックについてさらに質問がある場合は、以下のコメント欄からお気軽にどうぞ。

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