เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

รวบรวมโปเกมอนโดยไม่ใช้ loop

ลิสต์ที่มีโปเกมอน 720 ตัวถูกโหลดเข้า session แล้วในชื่อ poke_names และลิสต์อีกตัวที่เก็บเจเนอเรชันของโปเกมอนแต่ละตัวถูกโหลดเป็น poke_gens

มีการสร้าง for loop เพื่อกรองโปเกมอนที่อยู่ในเจเนอเรชัน 1 หรือ 2 และนับจำนวนตัวอักษรในชื่อของโปเกมอนแต่ละตัว:

gen1_gen2_name_lengths_loop = []

for name,gen in zip(poke_names, poke_gens):
    if gen < 3:
        name_length = len(name)
        poke_tuple = (name, name_length)
        gen1_gen2_name_lengths_loop.append(poke_tuple)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียน Python Code ที่มีประสิทธิภาพ

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำจัด for loop ข้างต้นโดยใช้ list comprehension และฟังก์ชัน map():

    • ใช้ list comprehension เพื่อคัดเลือกโปเกมอนที่อยู่ในเจเนอเรชัน 1 หรือเจเนอเรชัน 2 บันทึกผลลัพธ์เป็น gen1_gen2_pokemon
    • ใช้ฟังก์ชัน map() เพื่อนับจำนวนตัวอักษรในชื่อโปเกมอนแต่ละตัวใน gen1_gen2_pokemon บันทึก map object นี้เป็น name_lengths_map
    • รวม gen1_gen2_pokemon และ name_lengths_map เข้าด้วยกันเป็นลิสต์ชื่อ gen1_gen2_name_lengths

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Collect Pokémon that belong to generation 1 or generation 2
gen1_gen2_pokemon = [name for name,gen in ____(____, ____) if gen < ____]

# Create a map object that stores the name lengths
name_lengths_map = ____(len, ____)

# Combine gen1_gen2_pokemon and name_lengths_map into a list
gen1_gen2_name_lengths = [*____(____, ____)]

print(gen1_gen2_name_lengths_loop[:5])
print(gen1_gen2_name_lengths[:5])
แก้ไขและรันโค้ด