เรียนเขียนโปรแกรมง่ายๆกับ Expert Programming Tutor วันนี้เราจะมาเข้าสู่บท Iterators
- ตัววงวนเป็นอ๊อบเจ็คที่มีจำนวนค่านับได้
- ตัววงวนเป็นอ๊อบเจคที่สามารถวนซ้ำได้ซึ่งหมายความว่านักเรียนสามารถข้ามผ่านค่าทั้งหมดได้
ในทางเทคนิคใน Python iterator เป็นอ๊อบเจ็คที่ใช้โปรโตคอล iterator ซึ่งประกอบด้วยเมธอด __iter __ () และ __ next __ ()
Iterator vs Iterable
list tuples Dictionary และSetเป็นอ๊อบเจ็คที่สามารถทำซ้ำได้ทั้งหมด มันเป็นคอนเทนเนอร์แบบวนซ้ำซึ่งนักเรียนสามารถรับตัววนซ้ำได้ อ๊อบเจ็คทั้งหมดเหล่านี้มีวิธี iter () ซึ่งใช้ในการรับ iterator
ตัวอย่าง
ส่งคืนตัววนซ้ำจาก tuple และปรินต์แต่ละค่า
mytuple = ("apple", "banana", "cherry") |
ผลลัพธ์
apple |
แม้กระทั่งสตริงคืออ๊อบเจ็คที่วนซ้ำได้และสามารถคืนค่าตัววนซ้ำได้
ตัวอย่าง
สตริงเป็นอ๊อบเจ็คที่วนซ้ำได้ซึ่งมีลำดับอักขระ
mystr = "banana" print(next(myit)) |
ผลลัพธ์
b |
การใช้ Iterators กับ loop for
นอกจากนี้เรายังสามารถใช้เพื่อ for วนซ้ำผ่านวัตถุ iterable
ตัวอย่าง
วนซ้ำค่าของ tuple
mytuple = ("apple", "banana", "cherry") for x in mytuple: |
ผลลัพธ์
apple |
ตัวอย่าง
เรียงอักขระของสตริง
mystr = "banana" for x in mystr: |
ผลลัพธ์
b |
for loop สำหรับการสร้างวัตถุ iterator จริงและการเรียกใช้งาน next() วิธีการสำหรับแต่ละ loop
ในการสร้าง object/class เป็นตัววนซ้ำนักเรียนต้องใช้เมธอด __iter __ () และ __ next __ () กับobject ของนักเรียน
ดังที่นักเรียนได้เรียนในบท Python Classes / Objects ทุกคลาสมีฟังก์ชันที่เรียกว่า __init __ () ซึ่งช่วยให้นักเรียนสามารถเริ่มต้นบางอย่างเมื่ออ๊อบเจ็คถูกสร้างขึ้น
- __iter __ () วิธีการทำหน้าที่คล้ายกันนักเรียนสามารถเรียกใช้งาน (เริ่มต้น ฯลฯ ) แต่ต้องกลับอ๊อบเจ็คตัววนซ้ำตัวเองเสมอ
- วิธี __ next __ () ยังช่วยให้นักเรียนสามารถดำเนินการได้และจะต้องส่งคืนรายการถัดไปตามลำดับ
ตัวอย่างการสร้าง Iterators
การสร้างคลาสเเละอ๊อบเจ็ค โดยสร้างตัววนซ้ำที่ส่งคืนตัวเลขเริ่มต้นด้วย 1 และแต่ละลำดับจะเพิ่มขึ้นทีละหนึ่ง (ส่งกลับ 1,2,3,4,5 เป็นต้น)
class MyNumbers: def __next__(self): myclass = MyNumbers() print(next(myiter)) |
ผลลัพธ์
1 |
Stop Iteration
ตัวอย่างข้างต้นจะดำเนินต่อไปตลอดกาลหากคุณมีคำสั่งnext () เพียงพอที่จะใช้ในการวนรอบ เพื่อป้องกันการวนซ้ำไปเรื่อย ๆ เราสามารถใช้คำสั่ง StopIteration
ในเมธอด __ next__ () เราสามารถเพิ่มเงื่อนไขการยกเลิกเพื่อให้เกิดErrorหากการวนซ้ำถูกทำตามจำนวนครั้งที่ระบุ
ตัวอย่าง
หยุดหลังจากทำซ้ำ 20 ครั้ง
class MyNumbers: def __next__(self): myclass = MyNumbers() for x in myiter: |
ผลลัพธ์
1 |
ก็จบกันไปอีกบทเเล้วนะครับ อีกไม่กี่บทเราก็จะจบบท python tutorial กันเเล้ว อย่าพึ่งท้อกันนะครับ เจอกันในบทหน้าครับ
แปลจาก https://www.w3schools.com/python/python_iterators.asp
Tag ที่น่าสนใจ: python iterators iterable for_loop object-oriented_programming stopiteration programming loops python_classes objects next()_method iter()_method sequence iterable_objects python_programming
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM