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

ฝึกใช้ built-in: enumerate()

ในแบบฝึกหัดนี้ จะได้ฝึกใช้ฟังก์ชัน built-in enumerate() ของ Python ฟังก์ชันนี้มีประโยชน์เมื่อต้องการสร้างลิสต์พร้อมดัชนี ลองนึกภาพว่ามีลิสต์รายชื่อแขกที่ทยอยมาถึงงานปาร์ตี้ โดยเรียงตามลำดับการมาถึง (Jerry มาเป็นคนแรก ตามด้วย Kramer และคนอื่น ๆ):

names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']

หากต้องการแนบดัชนีที่แสดงลำดับการมาถึงของแต่ละคน สามารถ ใช้ for loop แบบนี้ได้:

indexed_names = []
for i in range(len(names)):
    index_name = (i, names[i])
    indexed_names.append(index_name)

[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]

แต่นั่นยังไม่ใช่วิธีที่มีประสิทธิภาพที่สุด มาดูกันว่า enumerate() ช่วยให้โค้ดกระชับและมีประสิทธิภาพมากขึ้นได้อย่างไร

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

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

ดูคอร์ส

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

  • แทนที่จะใช้ for i in range(len(names)) ให้อัปเดต for loop โดยใช้ i เป็นตัวแปรดัชนี และ name เป็นตัวแปร iterator พร้อมกับใช้ enumerate()
  • เขียน for loop ก่อนหน้าใหม่โดยใช้ enumerate() และ list comprehension เพื่อสร้างลิสต์ใหม่ชื่อ indexed_names_comp
  • สร้างลิสต์อีกชุดหนึ่ง (indexed_names_unpack) โดยใช้เครื่องหมายดอกจัน (*) เพื่อ unpack enumerate object ที่ได้จากการใช้ enumerate() กับ names คราวนี้ ให้เริ่มดัชนีของ enumerate() ที่หนึ่งแทนที่จะเป็นศูนย์

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

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

# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
    index_name = (i,name)
    indexed_names.append(index_name) 
print(indexed_names)

# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)

# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)
แก้ไขและรันโค้ด