สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial Python

L16 PYTHON SIMPLE ARITHMETIC L40 PYTHON TUTORIAL INTRO L41 PYTHON GETTING STARTED L42 PYTHON SYNTAX L43 PYTHON COMMENTS L44 PYTHON VARIABLES L45 PYTHON DATATYPE L46 PYTHON NUMBERS L47 PYTHON CASING L48 PYTHON STRINGS L49 PYTHON BOOLEANS L50 PYTHON OPARETORS L51 PYTHON LISTS L52 PYTHON TUPELS L53 PYTHON SETS L54 PYTHON DICTIONARY L55 PYTHON IF ELSE L56 PYTHON WHILE LOOP L57 PYTHON FOR LOOP L58 PYTHON FUNCTION L59 PYTHON LAMBDA L60 PYTHON ARRAYS L61 PYTHON CLASSSES OBJECTS L62 PYTHON INHERITANCE L63 PYTHON ITERATORS L63 PYTHON SCOPE L64 PYTHON MODULES L65 PYTHON DATETIME L66 PYTHON JSON L67 PYTHON REGEX L68 PYTHON PIP L69 PYTHON TRY EXCAPE L70 PYTHON USER INPUT L71 PYTHON FILE OPEN L73 PYTHON STRING FORMATTING L74 PYTHON READ FILE L75 PYTHON WRILE CREATE FILE L76 PYTHON DELETE FILE L90 PYTHON POISSON DISTRIBUTION L90 PYTHON RANDOM INTRODUCTION L91 PYTHON CHI SQUARE DISTRIBUTION L91 PYTHON EXPONENTIAL DISTRIBUTION L92 PYTHON RAYLEIGH DISTRIBUTION L93 PYTHON PARETO DISTRIBUTION L94 PYTHON ZIPF DISTRIBUTION L96 PYTHON RANDOM PERMUTATIONS L97 PYTHON SEABORN L98 PYTHON NORMAL DISTRIBUTION L99 PYTHON DISTRIBUTION L99 PYTHON LOGISTIC DISTRIBUTION L99 PYTHON MULTINOMIAL DISTRIBUTION L99 PYTHON NUMPY SPLITTING ARRAY L99 PYTHON NUMPY UFUNCS L99 PYTHON UNIFORM DISTRIBUTION LM60PYTHON BUILT IN FUNCTIONS LM61PYTHON STRING METHODS LM62PYTHON LIST ARRAY METHODS LM63PYTHON DICTIONARY METHODS LM64PYTHON TUPLE METHODS LM65PYTHON SET METHODS LM66PYTHON FILE METHODS LM67PYTHON KEYWORD LM68PYTHON BUILT IN EXCAPTION LM69PYTHON RANDOM MODULE LM70PYTHON MATH MODULE LM70PYTHON REQUSTS MODULE LM72PYTHON CMATH MODULE LM73PYTHON HOWTO REMOVE DUPLICATES FROM A PYTHON LIST LM74PYTHON HOW TO REVERSE A STRING IN PYTHON LM75PYTHON HOW TO ADD TWO NUMBERS IN PYTHON LM95PYTHON RANDOM DATA DISTRIBUTION

Python Iterators

เรียนเขียนโปรแกรมง่ายๆกับ Expert Programming Tutor วันนี้เราจะมาเข้าสู่บท Iterators
- ตัววงวนเป็นอ๊อบเจ็คที่มีจำนวนค่านับได้
- ตัววงวนเป็นอ๊อบเจคที่สามารถวนซ้ำได้ซึ่งหมายความว่านักเรียนสามารถข้ามผ่านค่าทั้งหมดได้
ในทางเทคนิคใน Python iterator เป็นอ๊อบเจ็คที่ใช้โปรโตคอล iterator ซึ่งประกอบด้วยเมธอด __iter __ () และ __ next __ ()
Iterator vs Iterable
list tuples Dictionary และSetเป็นอ๊อบเจ็คที่สามารถทำซ้ำได้ทั้งหมด มันเป็นคอนเทนเนอร์แบบวนซ้ำซึ่งนักเรียนสามารถรับตัววนซ้ำได้ อ๊อบเจ็คทั้งหมดเหล่านี้มีวิธี iter () ซึ่งใช้ในการรับ iterator
ตัวอย่าง
ส่งคืนตัววนซ้ำจาก tuple และปรินต์แต่ละค่า

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))

ผลลัพธ์

apple
banana
cherry

แม้กระทั่งสตริงคืออ๊อบเจ็คที่วนซ้ำได้และสามารถคืนค่าตัววนซ้ำได้
ตัวอย่าง
สตริงเป็นอ๊อบเจ็คที่วนซ้ำได้ซึ่งมีลำดับอักขระ

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

ผลลัพธ์

b
a
n
a
n
a

การใช้ Iterators กับ loop for
นอกจากนี้เรายังสามารถใช้เพื่อ for วนซ้ำผ่านวัตถุ iterable
ตัวอย่าง
วนซ้ำค่าของ tuple

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

ผลลัพธ์

apple
banana
cherry

ตัวอย่าง
เรียงอักขระของสตริง

mystr = "banana"

for x in mystr:
  print(x)

ผลลัพธ์

b
a
n
a
n
a

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 __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

ผลลัพธ์

1
2
3
4
5

Stop Iteration
ตัวอย่างข้างต้นจะดำเนินต่อไปตลอดกาลหากคุณมีคำสั่งnext () เพียงพอที่จะใช้ในการวนรอบ เพื่อป้องกันการวนซ้ำไปเรื่อย ๆ เราสามารถใช้คำสั่ง StopIteration
ในเมธอด __ next__ () เราสามารถเพิ่มเงื่อนไขการยกเลิกเพื่อให้เกิดErrorหากการวนซ้ำถูกทำตามจำนวนครั้งที่ระบุ
ตัวอย่าง
หยุดหลังจากทำซ้ำ 20 ครั้ง

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)

ผลลัพธ์

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

ก็จบกันไปอีกบทเเล้วนะครับ อีกไม่กี่บทเราก็จะจบบท python tutorial กันเเล้ว อย่าพึ่งท้อกันนะครับ เจอกันในบทหน้าครับ
แปลจาก https://www.w3schools.com/python/python_iterators.asp           



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา