一次性计算的循环
会话中已加载一个名为 generations 的整数列表,表示每只 Pokémon 所属的世代。您希望统计各个世代的数量,并计算每个世代占所有整数总数的百分比。
下面这段循环用于完成该任务:
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)
)
让我们通过将一次性计算移到循环外,使这个循环更高效。
本练习是课程的一部分
高效编写 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))