【Python】enumerate関数の使い方!アンパックとの組み合わせが便利

Programming

pythonのenumerate関数って便利ですね。

enumerate関数とは

引数にシーケンスを指定すると、カウント(≒インデックス)と要素をまとめたタプルを返してくれます。


enumerate(シーケンス,start=x)

のように使い、第二引数のstartのxに数値を入れるとその数値からカウントを開始します。何も指定しないと0から始まります。(つまりこの場合はカウント=インデックスとなります)

例えばリストの[a,b,c]などを入れると、


(0,a),(1,b),(2,c)

のように返します。 ただタプルのリスト型で返ってくる訳ではないので、扱いやすくするために


list(enumerate(シーケンス))

でリスト変換するといいです。

アンパックとは

左辺に変数をカンマで区切って書くと、それぞれの変数に右辺のタプルやリストの要素を代入できます。これをアンパックといいます。

a, b = ['Py','thon']
print(a) 
print(b) 

とすると


Py
thon

と出力されるという具合です。

for文でのenumerateとアンパックの組み合わせ

上の2つを組み合わせて、こんなことができます。


sample = ['a', 'b', 'c']
for index, val in enumerate(sample):
    print(index, val)

とすると


0 a
1 b
2 c

が出力されます。

順序のあるデータを順序の情報付きで簡単に取り出せるのはありがたいですね!

これはfor文の途中で処理を終了させる時によく使うそうで、


sample = ['a','b','c']
for num, value in enumerate(sample):
    print(value)
    if num == 2:
          break

みたいな感じで使います。

コメント

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