for loop ใช้ในการย้ำทำสำหรับสิ่งที่เป็นลำดับ เป็นชุด เช่น list, tuple, dictionary, set หรือ string
for loop จะมีการทำงานคล้ายกับ method ที่ใช้ในการย้ำทำในภาษาที่ใช้เขียนโปรแกรมเชิงวัตถุ (OOP – Object-oriented programming language)
for loop จะกระทำกับ item ที่อยู่ในชุด(list, tuple, dictionary เป็นต้น)ทีละอัน
ตัวอย่าง การใช้ for loop ใน list
animals = ['cat', 'dog','rabbit']
for x in animals:
print(x)
Output:
cat
dog
rabbit
ตัวอย่าง การใช้ for loop ใน string
for x in 'Hello World'
print(x)
Output:
H
e
l
l
o
W
o
r
l
d
break statement
ใช้หยุดการทำงานของ loop ทันที ก่อนที่ loop จะทำงานไปจนถึง item ตัวสุดท้าย
ตัวอย่าง การใช้ break กับ for loop ใน list
animals = ['cat', dog', 'rabbit']
for x in animals:
if x == 'dog':
break
print(x)
Output:
cat
#เมื่อ loop รันมาจนถึง dog เจอกับ break statement จึงหยุดการทำงานทันที
การสลับตำแหน่งการใส่ break และ print statement
animals = [‘cat’, dog’, ‘rabbit’]
for x in animals:
print(x)
if x == ‘dog’:
break
Output:
cat
dog
#loop รันมาจนถึง dog และพิมพ์ item dog ออกมาแล้ว จากนั้นเจอเงื่อนไขหาก x มีค่าเป็น dog ให้ออกจาก loop
continue statement
ใช้ในหยุดการกระทำสำหรับ item ปัจจุบัน และข้ามไป item ถัดไปเลย เช่น
animals = [‘cat’, ‘dog’, ‘rabbit’]
for x in animals:
if x == ‘dog’:
continue
print(x)
Output:
cat
rabbit
#loop รันมาจนถึง item dog เจอกับ continue statement จึงข้ามไปที่ item ต่อไปเลย คือ rabbit
range() function
เราสามารถใช้ for loop กับ range() function ได้ เนื่องจาก range() function จะแสดงผลชุดของข้อมูล (set)
ตัวอย่าง การใช้ for loop ใน range
for x in range (5):
print(x)
#range() function จะคืนค่าจำนวนเต็ม เริ่มตั้งแต่ 0 และเพิ่มขึ้นครั้งละ 1 ไปจนถึงจำนวนที่กำหนด
#ในตัวอย่างกำหนดไว้ว่าต้องการจำนวนเต็มจากค่าเริ่มต้น (0) ไปจนถึงค่าก่อน 5 เราจะได้ค่าตั้งแต่ 0 และเพิ่มขึ้นค่าละ 1 ไปจนถึงค่าสุดท้ายคือ 4 (4 อยู่ก่อน 5)
Output:
0
1
2
3
4
สามารถกำหนดค่าโดยเฉพาะที่ต้องการได้ด้วย เช่น
for x in range(1,50,10)
print(x)
#จำนวนแรกคือ จำนวนเริ่มต้น
#จำนวนที่สองคือ ค่าสุดท้ายที่ต้องไม่เกินค่านี้
#จำนวนที่สามคือ การเพิ่มขึ้นของจำนวน (หากไม่ใส่ค่านี้ จะเพิ่มขึ้นทีละ 1)
Output:
1
11
21
31
41
# ค่าเริ่มต้นคือ 1 โปรแกรมพิมพ์ 1 จากนั้นเพิ่มค่านี้ด้วยจำนวนที่สามคือ 10 ได้ผลลัพธ์เป็น 1 + 10 = 11 โปรแกรมพิมพ์ค่าผลลัพธ์ที่ได้ และทำการเพิ่มและพิมพ์ค่าไปเรื่อยๆ จนเมื่อผลลัพธ์ได้ 41 โปรแกรมหยุดทำงาน เพราะ 41 + 10 = 51 ซึ่งเกินจำนวนที่สอง (50)
else ใน for loop
สามารถใส่ else ใน for loop ได้ เพื่อรัน statement สุดท้ายหลังจาก loop หยุดทำงานแล้ว
for x in range(1,50,10)
print(x)
else:
print(‘finished’)
Output:
1
11
21
31
41
finished
#loop หยุดการทำงานที่ 41 เพราะจำนวนต่อไปจะเป็น 51 ซึ่งเกินจำนวนที่สอง (50) จากนั้นโปรแกรมพิมพ์ statement finished
nested loops
คือการมี loop ที่อยู่ใน loop
loop ที่อยู่ด้านในเรียกว่า “inner loop” จะถูกกระทำหนึ่งครั้ง ทุกครั้งที่ loop รันบน item หนึ่งอันของ loop ด้านนอก (outer loop)
ตัวอย่าง การแสดงผลของ nested loop
amount = [1,2,3]
animals = [‘cat','dog','rabbit']
for x in amount:
print(x)
for y in animals:
print(y)
Output:
1
cat
dog
rabbit
2
cat
dog
rabbit
3
cat
dog
rabbit
#outer loop คือ loop บน list amount
#inner loop คือ loop บน list animals
วิธีอ่าน nested loop ในตัวอย่าง
#loop วนไปที่ item แรกใน outer loop คือ 1 พิมพ์ item แรก จากนั้นวนเข้าไปใน inner loop ทันที
#ใน inner loop คำสั่งให้พิมพ์ item ที่อยู่ใน list animals ทีละอัน โปรแกรมจึงพิมพ์ cat dog rabbit จบการทำงานของ inner loop รอบแรก ออกจาก inner loop
#loop วนไปที่ item ที่สองใน outer loop คือ 2 พิมพ์ item ดังกล่าว จากนั้นวนเข้า inner loop อีก
#loop วนด้วยขั้นตอนด้านบนไปเรื่อยๆจนถึง item สุดท้ายใน outer loop คือ 3 พิมพ์ item สุดท้ายก่อนวนเข้า inner loop
#วน inner loop เสร็จ ออกจาก loop ไปที่ outer loop แต่ไม่มี item เหลืออยู่ เพราะวน item สุดท้ายไปแล้ว การ loop ทั้งหมดจึงหยุด
pass statement
for loop ไม่สามารถเป็น loop ว่างได้ แต่หากมีเหตุผลใดก็ตามที่ต้องปล่อยมันว่างไว้ก่อน สามารถใช้ pass statement ได้ เพื่อไม่ให้โปรแกรม error
for x in [1,2,4,5]
pass