Προτεινόμενη εκμάθηση:
- Προηγούμενη Σελίδα Εγχειρισμός Python
- Επόμενη Σελίδα Χώρος Ανάγνωσης Python
Προτεινόμενη εκμάθηση:
Python διαδραστικός αριθμητής
Ο διαδραστικός αριθμητής είναι ένα αντικείμενο που περιέχει τον αριθμητή των τιμών του.
Τεχ尼克ώς, στον Python, ο διαδραστικός αριθμητής είναι το αντικείμενο που υλοποιεί το protokόλο διαδραστικού αριθμητή, το οποίο περιέχει τις μεθόδους __iter__()
και __next__()
.
Διαδραστικός αριθμητής VS Διαδραστικό αντικείμενο (Iterable)
Λίστες, tuples, δictionαρια και συλλογές είναι διαδραστικά αντικείμενα. Είναι διαδραστικοί κουτί, από τα οποία μπορείτε να αποκτήσετε διαδραστικούς αριθμητές (Iterator).
Όλα αυτά τα αντικείμενα έχουν μια μέθοδο για την απόκτηση διαδραστικού αριθμητή iter()
Μέθοδος:
Παράδειγμα
Επιστροφή διαδραστικού αριθμητή από την tuple και εκτύπωση κάθε τιμής:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Και حتى η字符串 είναι ένα διαδραστικό αντικείμενο και μπορεί να επιστρέψει έναν διαδραστικό αριθμητή:
Παράδειγμα
Η字符串 είναι επίσης ένα διαδραστικό αντικείμενο που περιέχει μια σειρά χαρακτήρων:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Διαδραστικός κύκλος
Μπορούμε επίσης να χρησιμοποιήσουμε τον κύκλο for για να διαδραματίσουμε διαδραστικά αντικείμενα:
Παράδειγμα
Διαδραστική τιμή της τύπου tuple:
mytuple = ("apple", "banana", "cherry") για x σε mytuple: print(x)
Παράδειγμα
Διαδραστική σειρά χαρακτήρων της字符串:
mystr = "banana" για x σε mystr: print(x)
Συμβουλή:Ο κύκλος for δημιουργεί έναν αντικειμενοτύπο διαδραστικού αριθμητή και εκτελεί για κάθε εκτέλεση του κύκλου next()
μεθόδους.
Δημιουργία διαδραστικού αριθμητή
Για να δημιουργήσετε έναν διαδραστικό αριθμητή, πρέπει να υλοποιήσετε μια διαδραστική μέθοδο για το αντικείμενο/κλάση __iter__()
και __next__()
μεθόδους.
Ωστόσο, όπως μάθατε στο κεφάλαιο "Κλάσεις/Αντικείμενα" του Python, όλες οι κλάσεις έχουν ένα μέθοδο με το όνομα __init__()
Η συνάρτηση, η οποία επιτρέπει την εκκίνηση μερικών αρχικών ρυθμίσεων κατά τη δημιουργία αντικειμένων.
__iter__()
方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。
__next__()
方法也允许您执行操作,并且必须返回序列中的下一个项目。
Παράδειγμα
创建一个返回数字的迭代器,从 1 开始,每个序列将增加 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))
StopIteration
Αν έχετε αρκετό next()
συμβούλιο, ή να το χρησιμοποιήσουμε σε for γύρο, τότε το παραπάνω παράδειγμα θα συνεχιστεί απεριόριστα.
Για να αποφύγουμε την απεριόριστη επαναλήψη, μπορούμε να χρησιμοποιήσουμε StopIteration
συμβούλιο.
στο __next__()
Σε μέθοδο, αν ο αριθμός των επαναλήψεων έχει ολοκληρωθεί, μπορούμε να προσθέσουμε μια συνθήκη διακοπής για να προκαλέσουμε σφάλμα:
Παράδειγμα
Στα 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)
- Προηγούμενη Σελίδα Εγχειρισμός Python
- Επόμενη Σελίδα Χώρος Ανάγνωσης Python