Pythonのenumerate関数とは?プログラミングでの使い方を解説

Pythonの「enumerate関数」について、よくわからない方もいるかもしれません。enumerateは英語で「列挙する」という意味で、特定の語句や項目などにインデックス番号を与えます。こちらを有効活用できれば、リスト作成に役立つでしょう。

今回は、プログラミング関数を勉強中の方のために、enumerateの定義や使い方をまとめました。この記事を読んで、プログラミングの新しいテクニックを実践してみましょう。

Pythonのenumerate関数とは

enumerate関数とは、Python標準の関数の一種です。こちらはfor文内で利用可能で、ループ処理時にインデックス番号を追加できます。特定の事物に番号を与え、情報整理へつなげるしくみです。ユーザーはenumerate関数を利用することで、リスト作成を簡単に済ませることができるでしょう。

enumerateは、ブログラミング初心者でも簡単に利用可能です。Pythonの実行環境さえあれば、すぐに使えます。enumerate関数の設定に関しては、以下のサンプルコードを参照してください。

my_array = [ '1番目', '2番目', '3番目']for i, d in enumerate(my_array):    print('インデックス: ' + str(i) + ' 内容: ' + d )

その結果、以下の通りに表示されます。

インデックス: 0 内容: 1番目インデックス: 1 内容: 2番目インデックス: 2 内容: 3番目

enumerate関数を使えば、シンプルな構文でリストを作れるうえ、関数自体に制御をまかせることができるでしょう。

Pythonにおけるenumerateの基本的な使い方

enumerate関数は、さまざまなシチュエーションで利用可能です。この章では、リスト内容や辞書内容の取得で見ていきましょう。

リスト内容の取得

enumerate関数を使えば、リストの内容を一気に取得できます。コード設定の方法は以下のとおりです。

numbers = [1, 2, 3, 4, 5]for i in enumerate(numbers):    print(i)

設定の結果は以下になります。

(0, 1)(1, 2)(2, 3)(3, 4)(4, 5)

特段の設定がなければ、リストの番号が0から始まる点に要注意です。しかし、設定数に合わせてリストアップが決まるので、プログラミングをするうえでは便利といえるでしょう。indexと値の個別取得では、以下のように設定してください。

fruits = ['pencil', 'eraser', 'crayon']for i, j in enumerate(fruits):    print(i,j);

結果は以下のとおりです。

0 pencil1 eraser2 crayon

このように一度の操作で、リストの値をひととおり取得できます。

辞書内容の取得

enumerate関数では辞書内容の取得も可能です。辞書のサンプルコードがわかれば、取得準備へ移れるでしょう。

X3 = {"diamond":"pw1", "topaz":"pw2", "emerald":"pw3","ruby":"pw4"} for k,v in enumerate(X3):    print(k,v)

このコードの実行結果は、以下のとおりです。

0 diamond1 topaz2 emerald3 ruby

enumerate関数を辞書型として使った場合、表示されるのは辞書型のkeyです。for文で使った場合、valueではなくkeyを返すことになります。こちらに注意しないと、思いどおりの文字列を得られないかもしれません。しかし、enumerate関数を使えば、辞書の内容まで取得できるため、情報整理に役立つでしょう。

Pythonにおけるenumerateの有効活用法

enumerateの使い方に慣れれば、発展的な用途も実践可能です。この章では、for文との組み合わせや、ほかの関数との併用をチェックしてみましょう。

for文と組み合わせて使う

enumerate関数は、for文とのセット活用がほとんどです。まずは基本構文として、以下の形式を覚えてください。

my_array = ['dog', 'cat', 'rabbit']for i, val in enumerate(my_array):    print(type(i))    print(i)    print(type(val))    print(val)    print('------')

実行結果は以下のとおりです。

<class 'int'>0<class 'str'>dog------<class 'int'>1<class 'str'>cat------<class 'int'>2<class 'str'>rabbit------

設定構文の「for i, val in enumerate(my_array):」のうち、iはインデックスの変数ですが、indexやcountのように変数名は好きなものを使えます。また、valは配列内要素の割り当て変数で「my_array」が配列の意思表示です。

インデックス番号のデータ型の出力形式は数値型(int)なので、必要なら文字型(str)など別形式へ組み替えましょう。一般的にenumerate関数は、インデックスと要素を別々に取るので、以下のサンプルを参考にしてください。

my_array = ['rice', 'bread', 'salad']for i, val in enumerate(my_array, 1):    print( str(i) + ' ' + val )

上記の場合、表示結果は以下のとおりです。

1 rice2 bread3 salad

またインデックスと要素の同時取得では、以下のように設定してください。

my_array = [ '店舗A', '店舗B', '店舗C']for d in enumerate(my_array, 1):    print( d )

上記サンプルの設定では、以下のようにタプル型の出力結果が示されます。

(1, '店舗A')(2, '店舗B')(3, '店舗C')

ほかの関数との組み合わせ

enumerateは、ほかの関数との組み合わせが可能です。たとえばzip関数との併用は、以下のように行います。

my_array_1 = ['日本', 'ドイツ', 'アメリカ']my_array_2 = ['東京', 'ベルリン', 'ワシントン']for i, (prefucture, noodles) in enumerate(zip(my_array_1, my_array_2)):    print(i, prefucture, noodles)0 日本 東京1 ドイツ ベルリン2 アメリカ ワシントン

enumerate関数の使い方に慣れれば、以上のような応用もこなせるでしょう。

Pythonにおけるenumerate関数使用時の注意点

enumerate関数を使うときは、さまざまな注意点があります。使い方が間違っていると、エラーが出力される点に要注意です。ここでは、3つの注意点を紹介します。

第一引数の利用範囲は限られている

enumerate関数の場合、イテラブルオブジェクトでなければ、第一引数を使えません。このオブジェクトは繰り返し処理可能な要素を意味しています。

たとえば、配列や辞書型、文字型などはenumerate関数による処理が可能です。しかし、float型や数値型はイテラブルオブジェクトではないため、enumerate関数との併用ができません。実行しようとすると、エラーが出力されるので気をつけてください。

インデックス番号は1ずつ上げる

インデックス番号は、基本的に1ずつ上げるしくみです。enumerate関数の使用中、インデックス番号を複数上げたい方もいるでしょう。その場合は、別数字の追加をしてください。たとえば3ずつ上げる場合、コード例は以下のとおりです。

my_array = ['dog', 'cat', 'rabbit']count = 0for i, val in enumerate(my_array, 1):    print( str( i+count ) + ' ' + val )    count+=2

上記コードでは、以下の結果が出ます。

1 dog4 cat7 rabbit

インデックス番号を複数上げるなら「count+=」の数字は「希望数-1」を付与してください。

インデックス番号の変数がなければタプル型になる

インデックス番号用の変数はiが一般的である一方、使わない場合は以下のような状況になります。

my_array = [ '東京', '神奈川', '千葉']for d in enumerate(my_array):    print( d )

結果は以下のとおりです。

(0, '1番目')(1, '2番目')(2, '3番目')

このようにenumerate関数でインデックス番号用の変数を使わないと、出力はタプル型で行われます。

Pythonのenumerateのまとめ

enumerate関数は、特にリスト化に役立ちます。基本的にはfor文で用いる一方、シンプルな用途で初心者でも使いやすいでしょう。使い方を覚えれば、ほかのデータ型や関数にも組み込めます。enumerate関数を使いこなせば、データ整理が容易になるでしょう。

最新情報をチェックしよう!