【Python入門】enumerate関数とfor文でindexを取得しよう

50種類以上のIT教材を無料で使える!
0円から学習できるオンラインITスクール「侍テラコヤ」
→さっそく登録する

Pythonのfor文はリスト型や辞書型をループ毎に受け取って処理します。

その際にindexも一緒に受け取りたい、と思う人も多いかと思います。

enumerateの基本的な使い方を知りたい
enumerateでリストや辞書のindexを取得したい

といった方に向けて、この記事では、

【基礎】enumerate関数とは
【実践】enumerate関数の使い方
【実践】zip関数とzip_longest関数の使い方

について解説していきます。

enumerateやzipなどはリスト型や辞書型の要素を取得するときに非常に便利ですので、この機会に使い方を理解しておきましょう!

※ この記事のコードはPython 3.7, Ubuntu 18.04で動作確認しました。

なお、Pythonの記事については、こちらにまとめています。

enumerate関数とは

enumerate関数は、for文のループ処理でリスト型や辞書型の要素とindexを同時に取得したい場合に使います。

enumerate関数はこのように引数にindexを取得したいリストを指定します。

enumerate(リストオブジェクト)

ここではenumerate関数を使う前に、for文とvalue、keyの違いについておさらいしておきましょう。

for文の基本的な形はこのようになっています。

for 変数 in シーケンス:
    繰り返し処理したいコード

for文についてはこちらの記事で詳しく解説されているのでぜひご覧ください。

【Python入門】for文の使い方とは?基礎 + 応用的な使い方を解説
更新日:2023年3月21日

また、indexとvalueについても学んでおきましょう。

リスト型では、

mylist = ['apple', 'strawberry', 'watermelon']

という形で要素が格納されています。

この場合、

indexが0のvalueはapple
indexが1のvalueはstrawberry
indexが2のvalueはwatermelon

になります。

辞書型の場合は、indexの変わりに、keyがあります。

辞書型では、

mydict = {1:'apple', 2:'strawberry', 5:'watermelon'}

という形で要素が格納されています。

この場合、

keyが1のvalueはapple
keyが2のvalueはstrawberry
keyが5のvalueはwatermelon

になります。

リスト型と辞書型について詳しく知りたい方は、それぞれこちらの記事をご覧ください。

【Python入門】listの使い方とメソッドまとめ
更新日:2023年3月21日
【Python入門】dictionary(辞書)の使い方。基本と応用
更新日:2023年3月21日

【何から学べばいいかわからない…そんな悩みを解決します!】

完全無料ですぐわかる「プログラミング学習プラン診断」

・適性にあわせて学習プランを診断
・完全無料で気軽に診断できる
・学習の悩みもまるっと解決

さっそく診断してみる

enumerate関数の使い方

ここからは実際にindexを受け取る方法について見ていきましょう。

enumerate関数はfor文と一緒によく使われます。

こちらのサンプルコードをご覧ください。

X = range(10, 20)
 
for i,v in enumerate(X):
    print(i,v)

実行結果

0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19

このコードで、Xは10から19までの要素を生成するオブジェクトを持つ変数になります。

for文で使われているenumerate関数は、与えられたシーケンスやイテレータのindexと値を一緒に返してくれる機能があります。

そしてこの関数は(index, value)の組み合わせを、呼び出される度に順々に返してくれます。

後は、このiとvをprint関数で表示することで関数の動きを確認することが出来ます。

また、enumerate関数はもちろんrange関数だけでなく、リストや辞書のような型のシーケンスを同じように扱うことが出来ます。

リストの内容を取得する

ここではリストの内容をenumerate関数で一度に取得する方法を見てみましょう。

こちらのコードをご覧ください。

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

実行結果

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

このようにenumerateでリストを指定すると、indexと値が取得することができます。

indexと値を個別に取得したい場合は、このように指定します。

fruits = ['apple', 'orange', 'banana']
for i, j in enumerate(fruits):
    print(i,j);

実行結果

0 apple
1 orange
2 banana

このようにリストの値が一度に取得できていることがわかりますね!

辞書の内容を取得する

続いて辞書のサンプルコードを見てみましょう。

X3 = {"taro":"pw1", "hanako":"pw2", "itiro":"pw3","yui":"pw4"}
 
for k,v in enumerate(X3):
    print(k,v)

実行結果

0 taro
1 hanako
2 itiro
3 yui

辞書型とenumerate関数の組み合わせでは辞書型のkeyを表示しています。

辞書型オブジェクトはfor文に渡すとvalueではなくkeyを返すことに気をつけましょう。

zip関数、zip_longest関数の使い方

zip関数は、複数のリスト型を一度に扱うことが出来る関数です。

詳しくはこちらの記事をご覧ください。

【Python入門】zip関数の使い方をわかりやすく解説!
更新日:2023年3月21日

zip関数を使うとリストの要素の数がバラバラでも、数が少ない方のリストに自動的に合わせてくれます。

要素の多いリストに合わせたい場合は、zip_longest関数を使うとよいでしょう。

こちらのサンプルコードを見てみましょう。

from itertools import zip_longest
 
list1 = [1,2,3,4,5,6,7,8,9,10]
list2 = ['a','b','c','d','e']
 
for i,j in zip_longest(list1,list2):
    print('{0}, {1}'.format(i, j))

実行結果

1, a
2, b
3, c
4, d
5, e
6, None
7, None
8, None
9, None
10, None

zip_longest関数を使うと、要素の多いリストに合わせてタプルが作られます。

対応する要素がない場合は、「None」が含まれます。

zip_logest関数を使うためには、itertoolsという標準モジュールをimportする必要があるので気をつけましょう。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

まとめ

この記事では、for文でリストや辞書の各要素だけでなくindexやkeyを返す方法について説明しました。

・enumerate関数はリストや辞書などのシーケンスのindexを受け取るときに使う関数
・zip関数、zip_longest関数は複数のリストを一度に扱うことが出来る関数

ということをぜひ覚えておきましょう。

中でもenumerate関数はとても使用頻度が高い関数だと思うので、ぜひ使ってみてください。

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

第一言語はPythonです。
皆さんRustやりましょう。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close