Python: リストやタプルのインデックスと値の両方を順に取得 enumerate()
Pythonでリストやタプルのインデックスと値のペアを順番に取得したい場合は、 組み込み関数のenumerate()関数を使います。 enumerate()関数は要素のインデックスと値の両方を知りたい時に便利な関数です。
書式
enumerate(リスト) enumerate(タプル)
enumerateの引数には、リストだけでなく タプルなどのリテラブルなオブジェクトを指定できます。 戻り値はインデックスと値のタプルです。
enumerate()関数の戻り値
enumerate()関数の戻り値を具体的に見てみます。
print()関数で単純にenumerate(リスト)を表示してみます。
li = ["a", "b", "c"] print(enumerate(li)) # 実行結果 <enumerate object at 0x000001A388E0F040>
これだと具体的な内容がわからないので、 今度はlist()コンストラクタに渡してみます。
li = ["a", "b", "c"] print(list(enumerate(li))) # 実行結果 [(0, 'a'), (1, 'b'), (2, 'c')]
上の実行結果を見るとわかりやすいと思います。 インデックスと値のタプルがあり、 そのタプルがリストの要素数だけ格納されているのがわかります。
リストのインデックスと値を取得
enumerate()関数を使う場合は、 通常次のようにインデックス用の変数と値用の変数をカンマで区切って記述します。
li = ["a", "b", "c"] for i, v in enumerate(li): print(i, v)
上の場合は「i」にインデックス、「v」に値が入ってきます。
実行結果
0 a 1 b 2 c
タプルのインデックスと値を取得
タプルのインデックスと値を取得する場合も使い方は同じです。 enumerate()関数の引数にタプルを指定する所だけが違います。
t = (10, 20, 30) for i, v in enumerate(t): print(i, v)
実行結果
0 10 1 20 2 30