1. Learn
  2. /
  3. คอร์ส
  4. /
  5. การเขียน Python Code ที่มีประสิทธิภาพ

Connected

แบบฝึกหัด

ฝึกใช้ 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() ช่วยให้โค้ดกระชับและมีประสิทธิภาพมากขึ้นได้อย่างไร

คำแนะนำ

100 XP
  • แทนที่จะใช้ 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() ที่หนึ่งแทนที่จะเป็นศูนย์