イテラブルなオブジェクトのインデックスを求めるときに何を使いますか?
よく使うものとしてfor
文が挙げられるでしょう.
他にもインデックスを求めるメソッドがあります.
それがenumerate
メソッドです!
今回はインデックスを求めるときに便利なenumerate
メソッドについて紹介します.
enumerateメソッドについて
enumerateメソッドを使うと指定した引数のインデックス数を求められます.
enumerate(iterable, start=0)
引数にはイテラブル(複数の要素を順番に反復処理ができるオブジェクト)を入れましょう.
例えば
- リスト
- タプル
- 文字列
- 辞書
などが該当しますね.
文字列も各文字ごとにインデックス数を持っているので引数に置くことができます.
start
引数は処理回数を表しています.
初期値は0で,省略と変更が可能です.
もし1から数え始めたいときはstart=1
とすると良いでしょう.
enumerate オブジェクトを返します。 iterable は、シーケンスか iterator か、あるいはイテレーションをサポートするその他のオブジェクトでなければなりません。
enumerate(iterable, start=0)enumerate()
によって返されたイテレータの__next__()
メソッドは、 (デフォルトでは 0 となる start からの) カウントと、 iterable 上のイテレーションによって得られた値を含むタプルを返します。
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
メソッドを使ったときのほうがシンプルで可読性が上がっていると思いました.
インデックスは頻繁に利用するので便利なメソッドですね.
イテラブルなオブジェクトであれば引数に指定できるので引数を変えて練習してみましょう!