Pythonのenumerate関数の使い方|辞書(dict)や文字列の処理を解説する

スポンサーリンク
スポンサーリンク

イントロダクション

本日のチュートリアルでは、Pythonのenumerate()メソッドについて学習します。

Pythonのenumerate()メソッド

Pythonの組み込みメソッド enumerate() は、渡されたシーケンスを、同じ要素をタプルの形で持つenumerateオブジェクトに変換します。

さらに、この関数は対応するタプルの要素にインデックスを追加します。

Pythonの enumerate() メソッドを使うためのシンタックスは以下のとおりです。

enumerate( thing, start)

ここで

  • thing は,個々の要素のインデックスを追加する必要がある任意のシーケンスです.
  • start(オプション) は、インデックス作成を開始する値です。start(オプション)はインデックス作成を開始する値です。

Pythonのenumerate()メソッドを利用する

Pythonの enumerate() メソッドは、任意の反復可能なシーケンスを、インデックスを追加したenumerateオブジェクトに変換することができます

このシーケンスはリスト、文字列、またはタプルにすることができます

しかし、辞書や集合はシーケンスではないので、使用することはできません。

では、いくつかの例を見て、理解を深めましょう。

リストを列挙する

Python の enumerate() メソッドにリストを渡すと、タプル要素に最初の値として初等インデックスが追加されます。

返されるイテラブルはenumerate型です。

このenumerateオブジェクトを表示するには、単純な for ループを使用して、enumerateオブジェクトをトラバースします。

今回は、要素のインデックスと要素の値の両方に同時にアクセスできることに注意してください。

list1 = [ 11, 22, 33, 44]
 
enumerate_list = enumerate(list1)
print("Enumerated list now looks like: ", list(enumerate_list))
 
#print the index and corresponding value for enumerated list1
for i, item in enumerate(list1):
    print("Index = ", i,"  :  ","value = ",item)

結果は以下の通りです。

Enumerated list now looks like:  [(0, 11), (1, 22), (2, 33), (3, 44)]
Index =  0   :   value =  11
Index =  1   :   value =  22
Index =  2   :   value =  33
Index =  3   :   value =  44

ここで

  • list1 は、いくつかの初期値を含むリストです。これをenumerate()メソッドに渡して、enumerate_list変数に返されたオブジェクトを格納します。
  • このオブジェクトをリストにタイプキャストして print() メソッドで表示すると、リストの各要素がインデックスを追加したタプルに変換されていることがよくわかります。
  • ほぼ、iとitemの2つの変数を持つforループを使って、列挙されたオブジェクトを走査しています。このように、index(i)と対応する要素(item)の両方を同時にアクセスすることができます。

したがって、出力は正当化されます。

enumerate()`はタプルに対しても同じように動作します。

文字列を列挙する

同様に、Pythonの enumerate() メソッドを使用して、文字列をインデックスを追加したenumerateオブジェクトに変換することもできます。

その方法を見てみましょう。

string1 = "Python"
 
enumerate_string = enumerate(string1)
print("Enumerated list now looks like: ", list(enumerate_string))
 
#print the index and corresponding character for enumerated string
for i, item in enumerate(string1):
    print("Index = ", i,"  :  ","character = ",item)

結果は以下の通りです。

Enumerated list now looks like:  [(0, 'A'), (1, 's'), (2, 'k'), (3, 'P'), (4, 'y'), (5, 't'), (6, 'h'), (7, 'o'), (8, 'n')]
Index =  0   :   character =  A
Index =  1   :   character =  s
Index =  2   :   character =  k
Index =  3   :   character =  P
Index =  4   :   character =  y
Index =  5   :   character =  t
Index =  6   :   character =  h
Index =  7   :   character =  o
Index =  8   :   character =  n

ここで

  • 文字列string1を初期化し、enumerate()`の出力を変数enumerate_stringに格納します。
  • そして、型キャストされた enumerate_string のリストが出力されます。見ての通り、これは個々の文字要素とそのインデックスを含むタプルのリ ストです。
  • 再び、enumerateオブジェクトをforループで走査し、インデックスを持つ要素をプリントアウトします。

Python enumerate() with Start パラメータ

前述したように、 start パラメータはオプションのパラメータで、 enumerate() メソッドが返す enumerate オブジェクトに対して、どの値からインデックスを開始するかを決定します。

ここでは、インデックス 0 で始まるリストのインデックスをインデックス 20 で始まるリストに変更する例を見てみましょう。

list1 = [ 11, 22, 33, 44]
 
enumerate_list = enumerate(list1)
print("Enumerated list now looks like: ", list(enumerate_list))
 
#without start
print("Without Start:")
for i, item in enumerate(list1):
    print("Index = ", i,"  :  ","value = ",item)
 
#with start = 20
print("With Start:")
for i, item in enumerate(list1, 20):
    print("Index = ", i,"  :  ","value = ",item)

結果は以下の通りです。

Enumerated list now looks like:  [(0, 11), (1, 22), (2, 33), (3, 44)]
Without Start:
Index =  0   :   value =  11
Index =  1   :   value =  22
Index =  2   :   value =  33
Index =  3   :   value =  44
With Start:
Index =  20   :   value =  11
Index =  21   :   value =  22
Index =  22   :   value =  33
Index =  23   :   value =  44

この出力から明らかなように、 start=20 を指定すると、このメソッドが返す列挙オブジェクトの開始インデックスは20になります。

一方、start(デフォルト値0)を指定しない場合は、インデックス付けは0から開始されます。

まとめ

Pythonの enumerate() メソッドはシーケンスに対してのみ動作することに注意してください。

したがって、辞書や集合は enumerate() オブジェクトに変換することができません。

さて、この記事では、Pythonの enumerate() メソッドについて学びました。

さらに質問がある場合は、コメント欄で気軽に質問してください。

タイトルとURLをコピーしました