Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonとenumerate関数

【Python入門】enumerate関数の基本的な使い方の解説

Pythonのenumerate関数の使い方の解説

今回はPythonの組み込み関数のうち、便利なenumrate関数の使い方の基本を解説します。enumerateとは英語で「列挙する」という意味の単語です。では何を列挙してくれるのかというと次の2つの情報です。

  • 引数に指定したイテラブルオブジェクト(典型例としてはリストオブジェクト)から得た情報
  • それが何番目かというインデックス情報

これら2つの情報をタプルにして返してくれる機能をもつオブジェクト(enumerateオブジェクト)が、enumerate関数によって作成されます。ただし以下のように注意点があります。

注意点:enumerate関数を実行した結果はタプルオブジェクトではない

上のおおざっぱな説明では少しわかりにくかったでしょうが、enumerate関数を使ううえで重要なのは、enumerate関数を実行した結果として出来上がるのは、enumerateオブジェクトというオブジェクトであって、実行した結果として直接的にタプルオブジェクトが作られるわけではないという点です。

この点を意識しながら、さっそく基本的な使い方を見ていきましょう。

使い方と構文

enumerate関数は2つの引数を使い、次のように使います。

enumerate(,)
第1引数の①イテラブルオブジェクト
(典型例はリスト)
第2引数の②キーワード引数として、インデックス番号を何番から始めるかを設定
(書き方:start=整数)

使用例

次に使用例です。簡単なコードを書いてみました。

# 会社名のリストオブジェクトを作成
companies : list = ["Goole", "Apple", "Microsoft", "Meta"]

# enumerate関数はenumerateオブジェクトというものを返す。それをenumerate_objに代入。この時点ではタプルオブジェクトが直接できあがるわけではない
enumerate_obj = enumerate(companies, start=0)

# 型確認
type(enumerate_obj)  # ==> <class 'enumerate'>

# 属性を確認
dir(enumerate_obj)  # __iter__メソッドが存在しているので、イテラブルオブジェクトの1つ

# イテラブルオブジェクトして使用
for i in enumerate_obj:
    print(i)

これを実行すると、

(0, 'Goole')    
(1, 'Apple')
(2, 'Microsoft')
(3, 'Meta')     

となります。

単純なコードですし、さらにコメントも入れてありますので特に解説は必要ないかと思われますが、上述の注意点を踏まえると、

  • enumerate関数はenumerateオブジェクトというものを返すので、8行目のtype(enumerate_obj)の結果は、’enumerate’
  • enumerateオブジェクトは、その属性として特殊メソッドの__iter__メソッドをもつため、イテラブルオブジェクトの1種
  • enumerateオブジェクトがもつ機能によって、インデックス番号と今回のリスト(companies)のタプルが返される

という3点です。

なお上のコードをenumerate関数を使わずに書くと、こんなふうに書けます。

companies : list = ["Goole", "Apple", "Microsoft", "Meta"]

def enumeration(x, start):
    for i in x:
        tpl: tuple = (start, i)
        print(tpl)
        start +=1
        
enumeration(companies, start=0)

結果は、

(0, 'Goole')
(1, 'Apple')
(2, 'Microsoft')
(3, 'Meta')

となります。同じですね。

今回の解説でもイテラブルオブジェクトというものが理解の1つの鍵でした。このイテラブルオブジェクトについては、「【初心者にもわかりやすく】Pythonのイテレータについて、その基本とfor文の仕組みを解説」で解説していますでぜひ読んでみてください。

またこのenumerate関数とZip関数とを組み合わせた使い方についても、「【初心者向け】PythonのZip関数の解説」で解説していますのでご覧ください。