한 번만 계산하는 루프
각 포켓몬의 세대를 나타내는 정수 리스트 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)
)
이제 한 번만 계산하면 되는 값을 루프 밖으로 옮겨, 이 루프를 더 효율적으로 만들어 봅시다.
이 연습은 강의의 일부입니다
효율적인 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))