一度だけの計算を外に出すループ
各ポケモンの世代を表す整数のリストが 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))