【Python勉強会】enumerate関数を覚えよう

どうも!リョクちゃです。

今回は、enumerate関数について紹介をしていきます。

enumerateは、”数え上げる”や”並べ立てる”といった意味をもっています。

これら意味の通り、数え上げてくれる役割があります。

リストやタプルと組み合わせることで大きな効果を発揮できます。

それでは以下、例を交えて紹介していきます。

ちなみに前回のPython勉強会の記事はこちら、

リストのインデックスの考え方や新たな記述方法であるスライス記法についてざっくりと紹介しています。スライス記法は慣れてくると便利な書き方ですのでイメージだけでもつかんでもらえたらなと思います。



enumerate関数の書き方

enumerate関数は下のように書くことができます。

enumerate(配列変数)

よく使われる書き方が下のようなコードになります。

enumerate関数は、配列変数のインデックスと要素を返してくれる関数になります。

よって、上記のコードではそれぞれ変数1には、配列変数のインデックスが

変数2には配列変数の要素がそれぞれ代入されます。

たとえば、下のようなコードがあります。

これを実行すると、配列変数のインデックスと要素がそれぞれprint関数で出力されます。

応用例 : enumerate関数

プログラムコンテストなどでは、enumerate関数を使って解ける問題があります。

たとえば、入力値として整数a,bと文字列sがそれぞれ与えられます。

文字列sを整数aからbの範囲の文字を大文字にして出力をしてください。

これは文字列の部分範囲選択についてコードが書けるかどうかといった問題になります。

ここで入力値の整数a,bを2,6、文字列sにThis program is Pythonが与えられます。

文字列sのa番目からb番目までにある値を大文字にしてくださいといった問題に対して、

コードを書いていくと、下のようになります。

このように書くことができます。

イメージで表すと下のようになります。

ここで気を付けてください。

Pythonでは、文字列のインデックスは0から開始になりますが、

問題では、これについては考慮されていないのでコードを書く側が

理解していないといけないので気を付けましょう。

これにより、処理をする際にそれぞれインデックスを+1して、

上記のコードでは処理をさせています。



スポンサーリンク




コードの流れ

まず、for文を使ってenumerate関数で取得されたインデックスと値について、

それぞれ処理をしていきます。

→ enumerate(s) : 文字列sのインデックスと値がそれぞれ取得されます。

for i, j in enumerate(s) の

  • i がインデックス
  • j が値

になります。

for文下のif文条件式には、文字列sのインデックスが入力値a以上b未満であれば、

その値を大文字にし、それ以外であれば何もしないようにしています。

変数recはすべての結果を連結して保持してくれている役割を持ちます。

全ての処理が終わって、print関数で変数recに代入された値を出力しています。

まとめ

enumerate関数は、配列変数を引数に渡すことで(インデックス、値)の形式で返してくれる

処理の際に、インデックスをそのまま利用することも可能

実はrange関数と比べて、コードがクリアになり、

理解しやすくなるといった利点もあります。

ご覧いただきありがとうございます。

・こちらの書籍を参考にPythonの理解を深めました。

スポンサーリンク