[Python] List กับการลูป

September 15th, 2020

เรื่องนี้ผมเองก็เห็นว่าเป็นปัญหาของคนที่เพิ่งเรียน 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)) ดีกว่าครับผม

ผมหวังว่าโพสนี้จะช่วยเป็นแนวทางให้กับมือใหม่ไม่มากก็น้อยนะครับ ขอบคุณที่อ่านนะครับ