問題

与えられた氏名のリストから、一つずつ各要素の順番と氏名を出力するプログラムを作りたい。

期待する結果を出力するにあたって、プログラム①の[問題コード]の部分に入る適切なコードとして、適切なものはどれか。

プログラム①:

arr = ['田中', '川本', '長瀬', '佐藤']
[問題コード]
    print(i, v)

期待する結果:

0 田中
1 川本
2 長瀬
3 佐藤

 

選択肢

(a) for i in enumerate(arr):

(b) for i, v in enumerate(arr):

(c) for i in range(arr):

(d) for i, v in range(arr):

  • a
  • b
  • c
  • d

Python for文(1)enumerate()

答え

(b)

解説

enumerate()は、Pythonに標準的に用意されている組み込み関数の一つです。

enumerate()に引数としてリストを与えると、次のようなenumerateオブジェクトが返ってきます。

コード:

arr = ['田中', '川本', '長瀬', '佐藤']
print(enumerate(arr)) # enumerate()の返り値をそのまま出力
print(list(enumerate(arr))) # enumerate()の返り値(enumerateオブジェクト)をlist型にキャスト

出力:

<enumerate object at 0x14964f151c40>
[(0, '田中'), (1, '川本'), (2, '長瀬'), (3, '佐藤')]

上記の結果からもわかるように、enuemrate()を使うことで、リストの各要素に順番を付加したオブジェクトを作成することができます。

enumerate()は、主にfor文とセットで使われます。通常のfor文処理とenumerate()を使ったfor文処理の何が違うのかを、具体的に見てみましょう。

リストをそのままfor文を使って通常の繰り返し処理した場合には、次のような結果になります。

コード:

arr = ['田中', '川本', '長瀬', '佐藤']
for i in arr:
    print(i)

出力:

田中
川本
長瀬
佐藤

この状態では、繰り返し文の中で、「この要素はループの何番目なのか?」を知ることができません。実務の場では、リストの要素数が1,000個や10,000個を超えることや、今の要素が何番目なのかを知りたくなる場合があるので、このままでは不便です。

そこで、enumerate()を使うことで、この問題を解決することができます。

コード:

arr = ['田中', '川本', '長瀬', '佐藤']
for i, v in enumerate(arr):
    print(i, v)

出力:

0 田中
1 川本
2 長瀬
3 佐藤

 

テスト一覧

スキルテストが提供しているテストの一覧です。ぜひ学習や実力チェックに役立ててください。