การคำนวณครั้งเดียวนอกลูป
ได้โหลดลิสต์ของจำนวนเต็มที่แสดงเจเนอเรชันของ Pokémon แต่ละตัวเข้าสู่เซสชันของคุณแล้ว โดยเก็บไว้ในตัวแปรชื่อ 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 Code ที่มีประสิทธิภาพ
คำแนะนำการฝึกหัด
- Import
Counterจากโมดูลcollections - ใช้
Counter()นับจำนวนของแต่ละเจเนอเรชันจากลิสต์generationsแล้วบันทึกผลลัพธ์ไว้ในตัวแปรgen_counts - เขียน for loop ที่ปรับปรุงแล้ว โดยย้ายการคำนวณที่ทำเพียง ครั้งเดียว ออกไปไว้ด้านนอก (ด้านบน) ลูป ใช้ syntax เดิมทุกประการ (คัดลอกส่วนที่คำนวณครั้งเดียวมาวางไว้เหนือลูปได้เลย)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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))