【Python入門】enumerate関数でリスト/辞書のindexを取得する

  • 2025.09.25
       
【Python入門】enumerate関数でリスト/辞書のindexを取得する

Pythonには、リストやタプルなどを対象としてループ処理を行い、格納されている要素の値を順に取り出す方法があります。
その際、値だけでなくインデックスも一緒に取得したいケースが中にはあるかと思います。

今回の記事では、このようなケースに対して活用できる 「enumerate関数」 について紹介していきたいと思います。

enumerate関数の基本的な使い方や関数で対応可能なデータ型についてなど、詳しく解説していきますので、参考にしてみてください。

Pythonのenumerate関数とは?

enumerate関数は、リストやタプルなどのイテラブルオブジェクトをループ処理する際に、各要素の値と同時にインデックスを取得する事ができる関数です。

例えば、以下のようなループ処理があるとします。

【サンプルコード】

for value in sampleList:
    print(value)

通常、こうしたループ処理で取得できるのは要素の値だけですが、enumerate関数と組み合わせて使用することで、値と一緒にインデックスを取得することができるようになります。

enumerate関数の使い方

enumerate関数の詳しい使い方について、順に見ていきましょう。

基本構文

まずは、基本構文から解説していきます。

enumerate関数を使用する際は、以下の形式で記述します。

【基本構文】

enumerate(イテラブルオブジェクト,  開始番号)

第1引数には、要素を取得したいオブジェクトを指定します。
第2引数には、任意でインデックスの開始番号を指定することができます。

ループ処理でenumerate関数を使用する場合は、処理対象となるオブジェクトを指定する箇所に関数を記述します。

【サンプルコード】

for index, value in enumerate(sampleList):
    # 処理内容

上記のように、要素の値を格納する変数とは別に、インデックスを格納する変数を指定することができます。
変数に格納される順番は、インデックスが先です。

また、通常のループ処理と同様に変数を1つのみ指定した場合は、インデックスと値を要素に持つタプルが変数に格納されます。

リストのインデックスを取得する

以下のサンプルコードで、enumerate関数を使用した際の実際の動きを確認してみましょう。

まずは、タプルで取得する場合から見ていきます。

【サンプルコード】

sampleList = [10, 20, 30]

for value in enumerate(sampleList):
    print(value)

【実行結果】

(0, 10)
(1, 20)
(2, 30)

ループ毎に、インデックスと値が順に取得できているのが分かりますね。

それぞれを分けて取得したい場合は、先ほど解説したように、格納先となる変数を2つ指定します。

【サンプルコード】

fruitsList = ['apple', 'grape', 'peach']

for index, value in enumerate(fruitsList):
    print(f'{index}:{value}')

【実行結果】

0:apple
1:grape
2:peach

インデックスの開始値を変更する

enumerate関数では、第2引数にインデックスの開始値を指定することができます。

先ほどのサンプルコードの実行結果を見ると分かる通り、デフォルトでは0から順に数値が上がっていきますが、この開始値を任意の値に変更することが可能です。

以下のサンプルコードで、実際の例を見てみましょう。

【サンプルコード】

fruitsList = ['apple', 'grape', 'peach']

for index, value in enumerate(fruitsList, start=3):
    print(f'{index}:{value}')

【実行結果】

3:apple
4:grape
5:peach

開始値の指定は、「start=開始値」 の形式で記述します。
(start=は省略可能です)

このように、第2引数を使って、任意の数値から開始することができます。

enumerate関数を使用できるデータ型

enumerate関数はその性質上、イテラブルオブジェクトに該当するデータ型のみを取り扱います。

イテラブルオブジェクトとは、複数の要素を内包し、ループ処理による要素の取り出しが可能なオブジェクトのことを言います。
代表的なもので、リスト、タプル、辞書などが該当し、文字列や集合なども同じくイテラブルオブジェクトに分類されます。

一方で、数値や日付、真偽値などのデータ型はこれに該当しないため、enumerate関数で扱うことはできません。

なお、リストなどに並んでよく使用される辞書ですが、enumerate関数で指定した際にインデックスと共に取得できるのは、要素の値ではなくキーとなるため、注意が必要です。

【サンプルコード】

fruitsDict = {
    'apple' : 10,
    'grape' : 20,
    'peach' : 30
}

for index, key in enumerate(fruitsDict):
    print(f'{index}:{key}')

【実行結果】

0:apple
1:grape
2:peach

range関数との違いを理解する

ループ処理を行う際は、主に以下の2通りの方法でループする回数を決定します。

・任意の回数を指定してループする
・対象オブジェクトに含まれる要素の数だけループする

前者の方法でループする際に使用されるのが、range関数です。
range関数を使用すると、引数に指定した値を元に、変数に数値が格納されます。

【サンプルコード】

for count in range(5):
    print(count)

【実行結果】

0
1
2
3
4

格納された数値は当然ながら、インデックスとして活用することもできます。

range関数の場合は、値の開始値や終了値を指定したり、ループする毎に増える数値の変化幅を指定したりと、範囲を柔軟に指定することができるメリットがあります。

一方で、取得できるのはあくまで一定幅で変化する数値のみのため、リストなどの要素を対象に処理を行いたい場合に、もう片方の方法で行うよりもコード量が多くなってしまうデメリットがあります。

range関数はあくまで、イテラブルオブジェクト内の要素に対する処理を行うケースではなく、その他の特定の処理を任意の回数分だけ行いたい場合に活用するといいでしょう。

まとめ

今回は、enumerate関数の使い方について解説しました。

ループ処理時にインデックスを取得したいケースにおいては、enumerate関数を使用することでコードの簡素化や可読性の向上にも繋げることができるため、覚えておいて損はない関数です。

ぜひ使い方をマスターして、今後の開発に役立ててみてくださいね。

Pythonの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事