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

Connected

演習

ループを使わずにポケモンを集める

720体のポケモンを含むリストが poke_names として、各ポケモンに対応する世代を含む別のリストが poke_gens として、セッションに読み込まれています。

以下の for ループは、第1世代または第2世代に属するポケモンを抽出し、各ポケモンの名前の文字数を集めるものです。

gen1_gen2_name_lengths_loop = []

for name,gen in zip(poke_names, poke_gens):
    if gen < 3:
        name_length = len(name)
        poke_tuple = (name, name_length)
        gen1_gen2_name_lengths_loop.append(poke_tuple)

指示

100 XP
  • 上記の for ループを、リスト内包表記と map() 関数を使って置き換えましょう。

    • 第1世代または第2世代に属する各ポケモンをリスト内包表記で集め、gen1_gen2_pokemon に保存します。
    • map() 関数を使って、gen1_gen2_pokemon 内の各ポケモン名の文字数を取得します。この map オブジェクト を name_lengths_map として保存します。
    • gen1_gen2_pokemon と name_lengths_map を結合して、gen1_gen2_name_lengths というリストを作成します。