【Python】インデックスを求めるときはenumerateメソッドを使おう!使い方やfor文との違いを紹介

20230917_Python_3 プログラミング言語

イテラブルなオブジェクトのインデックスを求めるときに何を使いますか?
よく使うものとしてfor文が挙げられるでしょう.

他にもインデックスを求めるメソッドがあります.
それがenumerateメソッドです!

今回はインデックスを求めるときに便利なenumerateメソッドについて紹介します.

enumerateメソッドについて

enumerateメソッドを使うと指定した引数のインデックス数を求められます.

enumerate(iterable, start=0)

引数にはイテラブル(複数の要素を順番に反復処理ができるオブジェクト)を入れましょう.

例えば

  • リスト
  • タプル
  • 文字列
  • 辞書

などが該当しますね.
文字列も各文字ごとにインデックス数を持っているので引数に置くことができます.

start引数は処理回数を表しています.
初期値は0で,省略と変更が可能です
もし1から数え始めたいときはstart=1とすると良いでしょう.

enumerate オブジェクトを返します。 iterable は、シーケンスか iterator か、あるいはイテレーションをサポートするその他のオブジェクトでなければなりません。 enumerate() によって返されたイテレータの __next__() メソッドは、 (デフォルトでは 0 となる start からの) カウントと、 iterable 上のイテレーションによって得られた値を含むタプルを返します。

enumerate(iterablestart=0)

enumerateメソッドを使いインデックス数を求める

enumerateメソッドとよく一緒に使うデータといえばリストでしょう.
for文と似たような使い方でインデックス数と要素を出力できます.

muscle = ['大胸筋', '三角筋', '上腕三頭筋']

for index, element in enumerate(muscle):
    print(index, element)

for文では1つしか変数を置けませんでしたが,enumerateメソッドを使うとインデックス数用の変数と要素用の変数2つ置けます

クリックして拡大できます

タプルにしてリスト化する

enumerateメソッドの戻り値はタプルです.
各インデックスと要素をタプルにするときはenumerateメソッドが便利でしょう.

list(enumerate(リスト))
クリックして拡大できます

数え始めを変える

何も指定しなければインデックスの初めは必ず0です.
今回はstartに5を代入し5から順にインデックスを数えましょう.

クリックして拡大できます

先程は0始まりでしたが,5から数え始めていますね.

まとめ

今回はインデックス数を求めるenumerateメソッドについて紹介しました.
このメソッドを始めて知ったときfor文と違いが分からなかったですが,まとめてみるとenumerateメソッドを使ったときのほうがシンプルで可読性が上がっていると思いました.

インデックスは頻繁に利用するので便利なメソッドですね.

イテラブルなオブジェクトであれば引数に指定できるので引数を変えて練習してみましょう!