สำหรับลูปใน Python: ทุกสิ่งที่คุณต้องรู้

เผยแพร่แล้ว: 2022-08-18

บทช่วยสอนนี้จะสอนคุณเกี่ยวกับการใช้ for loops ใน Python พร้อมตัวอย่างโค้ด

ในการเขียนโปรแกรม ลูปช่วยให้คุณทำซ้ำชุดคำสั่งเฉพาะ คุณจะใช้ for loops สำหรับการวนซ้ำที่แน่นอนเมื่อ:

  • คุณรู้ว่าคุณกำลังทำงานกับลำดับที่มีองค์ประกอบจำนวนจำกัด
  • คุณเห็นจำนวนการทำซ้ำล่วงหน้า

บทช่วยสอนนี้จะสอนคุณเกี่ยวกับการทำงานกับลูปใน Python คุณจะเริ่มต้นด้วยการเรียนรู้ไวยากรณ์และการวนซ้ำอย่างง่ายโดยใช้ for loop จากนั้น คุณจะได้เรียนรู้เกี่ยวกับการประมวลผลอาร์กิวเมนต์บรรทัดคำสั่ง การใช้คำสั่งควบคุมลูป และอื่นๆ

มาเริ่มกันเลย…

ไวยากรณ์ของ Python สำหรับ Loop

ไวยากรณ์ของ Python สำหรับ Loop

ไวยากรณ์ทั่วไปสำหรับการใช้ for loop ใน Python มีดังนี้:

 for item in iterable: # do something on item statement_1 statement_2 . . . statement_n

ในไวยากรณ์ข้างต้น:

  • item เป็นตัวแปรการวนซ้ำ
  • iterable หมายถึง Python ใด ๆ ที่ iterable เช่นรายการ tuples และ strings
  • statement_1 ถึง statement_n แสดงถึงคำสั่งใน loop body

หมายเหตุ : อย่าลืมเพิ่มโคลอน ( : ) หลังชื่อของ iterable และเยื้องคำสั่งทั้งหมดในเนื้อหาของลูปด้วยช่องว่างสี่ช่อง

ทั่วไปสำหรับการสร้างลูปใน Python

สำหรับการสร้างลูป

เมื่อใช้ for ลูป:

  • คุณสามารถเข้าถึงรายการได้โดยตรงโดยใช้ไวยากรณ์ที่กล่าวถึงในส่วนก่อนหน้า
  • คุณสามารถใช้ for วนซ้ำร่วมกับฟังก์ชันในตัวของ Python เช่น range() และ enumerate()

เราจะกล่าวถึงในส่วนนี้

ใช้สำหรับวนซ้ำเพื่อเข้าถึงองค์ประกอบ

เพื่อปรับปรุงความสามารถในการอ่าน คุณควรเลือกตัวแปรแบบวนซ้ำซึ่งบ่งชี้ว่ารายการมีอะไรบ้าง ตัวอย่างเช่น ในตัวอย่างด้านล่าง nums คือรายการของตัวเลขที่เราใช้ num เป็นตัวแปรการวนซ้ำ สังเกตว่า for num in nums: ใช้งานง่ายและอ่านง่าย

 nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3

เพิ่มตัวอย่างอีกสองสามตัวอย่าง คุณสามารถใช้ for fruit in fruits: และ for student in students: เมื่อวนซ้ำผ่าน fruits และรายชื่อ students ตามลำดับ

ใช้สำหรับวนรอบกับ range() Function

เมื่อต้องการเข้าถึงรายการผ่านดัชนี คุณสามารถใช้ฟังก์ชัน range()

ใน Python range(start, stop, step) จะคืนค่า range object ซึ่งคุณสามารถวนซ้ำเพื่อรับดัชนี: start , start + step และอื่นๆ จนถึงแต่ไม่รวม stop

 for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3

คุณยังสามารถใช้ฟังก์ชัน range() เพื่อสร้างลำดับของตัวเลขเพื่อวนซ้ำได้ ในตัวอย่างด้านล่าง เราตั้งค่าพารามิเตอร์ step ที่ไม่บังคับเป็น 2 ดังนั้นเราจึงได้ตัวเลขตั้งแต่ 10 ถึงแต่ไม่รวม 20 ในขั้นตอนที่ 2

 for i in range(10,20,2): print(i) # Output 10 12 14 16 18

ใช้สำหรับวนรอบด้วยฟังก์ชัน enumerate()

เมื่อคุณต้องการวนซ้ำผ่าน iterable และเข้าถึงรายการและดัชนีพร้อมกัน คุณสามารถใช้ฟังก์ชัน enumerate()

นี่คือตัวอย่าง

 for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3
python-for-loop

วิธีอ่านรายการจากรายการที่ใช้สำหรับวนซ้ำใน Python

หากต้องการวนซ้ำรายการ Python โดยใช้ for loop คุณสามารถใช้ไวยากรณ์ทั่วไปจากส่วนก่อนหน้าได้

ในตัวอย่างด้านล่าง nums สามารถทำซ้ำได้ และ num คือตัวแปรการวนซ้ำ

 nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9

วิธีวนซ้ำสตริงโดยใช้ลูปใน Python

สตริง Python เป็นแบบวนซ้ำได้ และคุณสามารถทำการวนซ้ำ จัดทำดัชนี แบ่งส่วน และอื่นๆ ได้

หมายเหตุ : Python ไม่มีประเภทข้อมูลอักขระในตัว ดังนั้นคุณจึงสามารถปฏิบัติต่ออักขระหนึ่งตัวเป็นสตริงที่มีความยาวได้

 my_string = "Code" for char in my_string: print(char) # Output C o d e

วิธีการวนซ้ำอาร์เรย์ที่ใช้สำหรับวนซ้ำใน Python

ลูปทรูอาร์เรย์ที่ใช้สำหรับลูป

คุณสามารถวนซ้ำผ่านอาร์เรย์โดยใช้การวนซ้ำและการซ้อนสำหรับลูป

ในข้อมูลโค้ดด้านล่าง array1 เป็นรายการที่ซ้อนกันซึ่งมีรายการที่เล็กกว่าเป็นองค์ประกอบ ดังนั้นการวนซ้ำผ่าน array1 จะให้แต่ละแถวดังที่แสดงด้านล่าง

 array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]

ในการเข้าถึงแต่ละองค์ประกอบในแต่ละแถว คุณสามารถใช้อีกอัน for วนซ้ำได้

 array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)

ในเซลล์รหัสด้านบน:

  • วงรอบนอกช่วยให้คุณทำดัชนีในแถว
  • inner for loop ช่วยให้คุณแตะองค์ประกอบในแต่ละแถวได้

นี่คือผลลัพธ์ที่สอดคล้องกัน

 Output 2 3 7 8

วิธีอ่านอาร์กิวเมนต์บรรทัดคำสั่งสำหรับ Loop

บรรทัดคำสั่ง

ในฐานะนักพัฒนา คุณควรสามารถเรียกใช้สคริปต์ Python จากบรรทัดคำสั่งและใช้อาร์กิวเมนต์บรรทัดคำสั่งเพื่อโต้ตอบกับสคริปต์ได้

คุณสามารถใช้โมดูลในตัวของ Python เช่น sys และ argparse เพื่อแยกวิเคราะห์และอ่านอาร์กิวเมนต์บรรทัดคำสั่ง

ในส่วนนี้ เราจะพูดถึงวิธีใช้โมดูล sys และใช้ for loop เพื่อวนซ้ำรายการอาร์กิวเมนต์บรรทัดคำสั่ง

ในโมดูล sys sys.argv คือรายการอาร์กิวเมนต์บรรทัดคำสั่งที่คุณส่งผ่าน ดังนั้น คุณจึงสามารถวนซ้ำผ่าน sys.argv ได้ในลักษณะเดียวกับที่คุณวนรอบรายการ Python ใดๆ

 # main.py import sys for arg in sys.argv: print(arg)

ตอนนี้คุณสามารถเรียกใช้โปรแกรมจากบรรทัดคำสั่งดังที่แสดงด้านล่าง

 $ python main.py Hello Python3 main.py Hello Python3

โดยค่าเริ่มต้น ชื่อของโมดูลคืออาร์กิวเมนต์แรกและอยู่ที่ดัชนีศูนย์ใน sys.argv

หากคุณต้องการเข้าถึงดัชนีและอาร์กิวเมนต์ที่เกี่ยวข้อง คุณสามารถใช้ฟังก์ชัน range()

 # main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

️ ต่อไป ให้รัน main.py อีกครั้ง

 $ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3

สมมติว่าคุณต้องการแยกวิเคราะห์และประมวลผลอาร์กิวเมนต์อื่นที่ไม่ใช่ชื่อโมดูล คุณสามารถตั้งค่าเริ่มต้นเป็น 1 เช่นเดียวกับในเซลล์รหัสด้านล่าง

 # main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
 $ python main.py Hello Python3 arg1 is Hello arg2 is Python3
python-for-loop-command-line-args

เมื่อนำทั้งหมดมารวมกัน ไฟล์ main.py จะมีรหัสดังต่อไปนี้

 # main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")

นี่คือผลลัพธ์เมื่อคุณเรียกใช้โมดูล

 $ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3

วิธีใช้คำสั่ง break Inside สำหรับ Loop

แบ่งคำสั่ง Inside for Loop

เช่นเดียวกับภาษาโปรแกรมอื่นๆ Python ยังสนับสนุนการใช้คำสั่ง loop control break and continue คำสั่งเหล่านี้สามารถช่วยเปลี่ยนแปลงโฟลว์การควบคุมในลูป โดยขึ้นอยู่กับเงื่อนไขบางประการ เรามาดูวิธีการใช้พวกมันใน for loop กัน

การ break คำสั่งสามารถใช้เพื่อแยกออกจากลูปเมื่อเงื่อนไขเฉพาะเป็น True

เราต้องการเขียนโปรแกรมเพื่อทำสิ่งต่อไปนี้:

  • แก้ไข k จำนวนอินพุต
  • ใช้ for loop เพื่ออ่านอินพุตของผู้ใช้ - ครั้งละหนึ่งหลักและสรุปตัวเลขที่ไม่ใช่ค่าลบ (มากกว่าหรือเท่ากับศูนย์)
  • กระบวนการนี้ควรดำเนินต่อไปตราบเท่าที่ผู้ใช้ป้อนตัวเลขที่ไม่เป็นลบ
  • เมื่อผู้ใช้ป้อนจำนวนลบ ให้ออกจากลูปและพิมพ์ผลรวมออกมา

นี่คือรหัสที่ทำงานข้างต้น

 k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)

หากผู้ใช้ป้อนตัวเลขที่น้อยกว่าศูนย์ ตัวควบคุมจะแยกลูป for ออกจากคำสั่งแรกหลังลูป

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10

วิธีใช้คำสั่ง Continue Inside for Loop

คำสั่ง continue สามารถใช้เพื่อข้ามการวนซ้ำบางอย่างได้ ขึ้นอยู่กับเงื่อนไขเฉพาะ

ลองใช้ตัวอย่างเดียวกันในส่วนก่อนหน้า

  • อ่านในอินพุตของผู้ใช้และคำนวณผลรวมของตัวเลขที่ไม่เป็นลบ
  • หากผู้ใช้ป้อนจำนวนลบ ให้ ข้าม การวนซ้ำนั้นไปยังการ วนซ้ำถัดไป และอ่านในตัวเลขถัดไป
 k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)

นี่คือผลลัพธ์ตัวอย่าง

 Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13

ตัวเลขที่สี่คือ -1 ซึ่งเป็นค่าลบ อย่างไรก็ตาม คราวนี้ for loop จะดำเนินต่อไปจนกว่าเราจะถึงจำนวนอินพุตที่ระบุ และละเว้นอินพุตเชิงลบ โดยพื้นฐานแล้วมันจะส่งกลับผลรวมของตัวเลขที่ไม่เป็นลบทั้งหมดจากตัวเลขอินพุต k

คุณสามารถเรียกใช้ Infinite for Loop ใน Python ได้หรือไม่?

ไม่มีที่สิ้นสุดสำหรับ Loop

ในตัวอย่างและกรณีการใช้งานทั้งหมดที่เราได้พูดคุยกันจนถึงตอนนี้ เราไม่เคยพบปัญหาของ infinite for loop แต่เราสามารถมี infinite for loop ใน Python ได้หรือไม่?

พิจารณาฟังก์ชัน double() ต่อไปนี้

 def double(x = 1): return x*2
  • เมื่อคุณเรียกใช้ฟังก์ชัน double() โดยไม่ระบุค่าของ x ค่าดีฟอลต์คือ 1 จะถูกใช้
  • เมื่อคุณระบุค่าสำหรับ x ในการเรียกใช้ฟังก์ชัน ค่านั้นจะถูกใช้
 double() # Returns: 2 double(20) # Returns: 40

ใน Python ฟังก์ชัน iter() จะส่งกลับวัตถุ iterator คุณสามารถใช้ next(iter-obj) เพื่อวนซ้ำตามลำดับและเข้าถึงรายการที่ตามมา

– พิจารณา callable-object และค่า, Sentinel .

iter(callable-object, sentinel) สามารถใช้ทำซ้ำได้จนกว่าค่าที่ส่งคืนจาก callable-object จะเท่ากับ sentinel

คุณเห็นไหมว่าทำไมเราถึงมี infinite for loop ได้ในกรณีนี้?

python-for-infinite-loop

คุณมี callable-object เรียกได้และค่า sentinel หากค่าที่ส่งคืนจาก callable ไม่เท่ากับ Sentinel การวนซ้ำจะดำเนินต่อไปตลอดไป!

ลองใช้ฟังก์ชันด้านบนเป็น double เท่าของ callable และตั้งค่า Sentinel เป็น 0

หมายเหตุ : กล่าวถึงชื่อของฟังก์ชัน double ไม่ใช่การเรียกฟังก์ชัน double()

เนื่องจากค่าที่ส่งคืนจากฟังก์ชัน double จะเป็น 2 เสมอ และไม่เคยเท่ากับ 0 เราจึงมีลูปอนันต์!

️ ลองเรียกใช้เซลล์รหัสต่อไปนี้ มันไม่มีที่สิ้นสุดสำหรับการวนซ้ำ และคุณจะต้องบังคับหยุดโปรแกรม

 for _ in iter(double,0): print("Running...")
python-for-loop-infinite

Python For Loops: คำถามฝึกหัด

#1 . ใช้สำหรับวนซ้ำเพื่อพิมพ์ตัวเลขคู่ทั้งหมดในช่วง 0 ถึง 20

คำแนะนำ : ใช้ฟังก์ชัน range() กับค่า step ที่ถูกต้อง

#2 . พิมพ์เลขคู่ทั้งหมดตั้งแต่ 20 ถึง 0

คำแนะนำ : ใช้ค่าลบสำหรับพารามิเตอร์ step ในฟังก์ชัน range()

#3 . สร้างอาร์เรย์ NumPy สามมิติ

คำแนะนำ : ใช้สำหรับวนซ้ำและซ้อนสำหรับลูปตามความจำเป็นเพื่อเข้าถึงแถวและรายการแต่ละรายการในอาร์เรย์

ลองใช้ตัวอย่าง

ห่อ

นี่คือบทสรุปของสิ่งที่คุณได้เรียนรู้ในบทช่วยสอนนี้

  • ไวยากรณ์การใช้ Python for loop พร้อมกับ range() และ enumerate() functions
  • ใช้สำหรับลูปเพื่อวนซ้ำรายการ อาร์เรย์ และสตริง และอ่านในอาร์กิวเมนต์บรรทัดคำสั่ง
  • การใช้คำสั่งควบคุมลูป: แบ่ง เพื่อแยกออกจากลูปและ ดำเนิน การคำสั่งต่อเพื่อข้ามการวนซ้ำบางอย่าง - ตามเงื่อนไข - ภายในสำหรับลูป
  • ทำความเข้าใจความเป็นไปได้ของลูปอนันต์ใน Python

ต่อไป เรียนรู้วิธีการใช้ split() วิธีการใน Python