เรื่องนี้ผมเองก็เห็นว่าเป็นปัญหาของคนที่เพิ่งเรียน Python และเขียนโปรแกรมใหม่ ๆ การลูปที่ว่ายากอยู่แล้วสำหรับมือใหม่ พอเจอ list เข้าไปอาจจะทำให้เลิกไปเลย ผมเลยอยากจะมาอธิบาย list และการลูปกับ list แบบง่าย ๆ
List คืออะไร
List เป็นรูปแบบการเก็บข้อมูลหลายจำนวนรูปแบบนึง เป็นข้อมูลที่เรียงต่อกันตั้งแต่ตำแหน่ง 0 ไล่ไปเรื่อย ๆ ให้ลองนึกถึงตู้ล็อกเกอร์ที่วางติด ๆ กันดูนะครับ (เครดิตวิธีการอธิบายมาจาก David Malan ของ CS50 ที่ Harvard ครับ)
แต่ละตู้จะมีหมายเลข ใน list จะมีสิ่งที่เรียกว่า index เอาไว้บอกตำแหน่งโดยเริ่มจาก 0 เพิ่มไปเรื่อย ๆ จนกว่าหน่วยคววามจำจะเต็ม และก็ในตู้ล็อกเกอร์จะมีของอยู่ข้างไหน List ก็จะมีค่าของมันในแต่ละตำแหน่ง เช่น
words = ['kotlin', 'swift', 'doc']
print(words[0])
ถ้ารันโค้ดในนี้ก็จะเห็นว่าจะมีคำว่า kotlin ออกมาจากคอนโซลซึ่ง kotlin คือค่าของ words ในตำแหน่งที่ 0 เราจะใช้ []
ในการระบุตำแหน่งใน list
การลูปกับ list
List สามารถนำมาใช้ลูปได้ 2 แบบคือ ลูป index กับ value จะขอยกตัวอย่างการลูปแบบ index ในบรรทัดถัดไป
for i in range(len(words)):
print(words[i])
# Alternative while loop
i = 0
while i < len(words):
print(words[i])
i += 1
สิ่งที่นำมาลูปคือตำแหน่ง จะเลื่อนตำแหน่งจาก 0 จนถึงระยะสุดของ list ก็คือ len(words) - 1 แล้วจะใช้ตำแหน่งเรียกข้อมูลภายใน list อีกแบบนึงคือจะเป็นการลูป value แทน
for word in words:
print(word)
อันนี้เราจะใช้ value ในการลูปแทนโดยค่าของ word จะไล่ไปตาม list ตั้งแต่ต้นยันสุด list โดยที่เราไม่ต้องไปสนใจตำแหน่งเลย
เราจะใช้ loop แบบไหนดี
ปกติถ้าเราจะไล่สมาชิกใน list โดยที่ไม่สนตำแหน่งใช้ for item in a_list
จะดีกว่า เพราะไม่ต้องมีตำแหน่งมาวุ่นวาย
แต่ถ้าต้องการใช้ตำแหน่งใน list เช่น การกลับ list หรือการเรียง list ควรจะใช้ for index in range(len(a_list))
ดีกว่าครับผม
ผมหวังว่าโพสนี้จะช่วยเป็นแนวทางให้กับมือใหม่ไม่มากก็น้อยนะครับ ขอบคุณที่อ่านนะครับ