始める無料で始める

一度だけの計算を外に出すループ

各ポケモンの世代を表す整数のリストが generations としてセッションに読み込まれています。各世代の件数を集計し、整数の総数に対して各世代が何パーセントを占めるかを求めたいとします。

この作業のために、次のループが書かれました。

for gen,count in gen_counts.items():
    total_count = len(generations)
    gen_percent = round(count / total_count * 100, 2)
    print(
      'generation {}: count = {:3} percentage = {}'
      .format(gen, count, gen_percent)
    )

このループを、1回だけ行えばよい計算をループの外に移動して、より効率的にしましょう。

この演習はコースの一部です

効率的なPythonコードの書き方

コースを見る

演習の手順

  • collections モジュールから Counter をインポートしてください。
  • Counter() を使って、generations リストから各世代の件数を数え、gen_counts として保存してください。
  • 一度だけ 行えばよい計算をループの外(ループの上)に置く、より良い for ループを書いてください。元の for ループとまったく同じ構文を使い(その一度きりの計算をループの上に単純にコピー&ペーストして)、実装してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import Counter
____

# Collect the count of each generation
gen_counts = ____

# Improve for loop by moving one calculation above the loop
total_count = ____

for gen,count in gen_counts.items():
    gen_percent = round(count / total_count * 100, 2)
    print('generation {}: count = {:3} percentage = {}'
          .format(gen, count, gen_percent))
コードを編集して実行