1. 学ぶ
  2. /
  3. コース
  4. /
  5. 効率的なPythonコードの書き方

Connected

演習

組み込みの練習: enumerate()

この演習では、Python の組み込み関数 enumerate() の使い方を練習します。この関数は、インデックス付きのリストを得るのに便利です。たとえば、あなたが主催するパーティーに到着した人のリストがあり、到着順に並んでいるとします(Jerry が最初に到着し、次に Kramer、という具合です)。

names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']

到着順を示すインデックスを人名に付けたい場合、次のような for ループを使うことも できます。

indexed_names = []
for i in range(len(names)):
    index_name = (i, names[i])
    indexed_names.append(index_name)

[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]

ただし、これは最も効率的な解決策ではありません。enumerate() を使って、これをより効率的にする方法を見ていきましょう。

指示

100 XP
  • for i in range(len(names)) の代わりに、enumerate() を使い、インデックス変数として i、イテレータ変数として name を使うように for ループを更新してください。
  • 先ほどの for ループを書き換え、enumerate() とリスト内包表記を用いて新しいリスト indexed_names_comp を作成してください。
  • さらに、names に対して enumerate() を使って生成される enumerate オブジェクト を、アスタリスク(*)でアンパックして別のリスト(indexed_names_unpack)を作成してください。今回は、enumerate() の 開始インデックスを 0 ではなく 1 にしてください。