Η συνάρτηση Python iter () επιστρέφει έναν επαναληπτικό για το δεδομένο αντικείμενο.
Η iter()
συνάρτηση δημιουργεί ένα αντικείμενο που μπορεί να επαναληφθεί ένα στοιχείο κάθε φορά.
Αυτά τα αντικείμενα είναι χρήσιμα όταν συνδυάζονται με βρόχους όπως για βρόχο, ενώ για βρόχο.
Η σύνταξη της iter()
συνάρτησης είναι:
iter (αντικείμενο, φρουρός)
iter () Παράμετροι
Η iter()
συνάρτηση παίρνει δύο παραμέτρους:
- αντικείμενο - αντικείμενο του οποίου ο επαναληπτικός πρέπει να δημιουργηθεί (μπορεί να είναι σύνολα, πλειάδες κ.λπ.)
- sentinel (προαιρετικό) - ειδική τιμή που χρησιμοποιείται για την αναπαράσταση του τέλους μιας ακολουθίας
Επιστροφή τιμής από iter ()
- Η
iter()
συνάρτηση επιστρέφει ένα αντικείμενο επανάληψης για το δεδομένο αντικείμενο. - Εάν το αντικείμενο που ορίζεται από το χρήστη δεν υλοποιείται
__iter__()
και,__next__()
ή__getitem()__
,TypeError
εμφανίζεται η εξαίρεση. - Εάν παρέχεται επίσης η παράμετρος sentinel,
iter()
επιστρέφει έναν επαναληπτικό έως ότου δεν βρεθεί ο χαρακτήρας sentinel.
Παράδειγμα 1: Εργασία του Python iter ()
# list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
Παραγωγή
aeiou
Παράδειγμα 2: iter () για προσαρμοσμένα αντικείμενα
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))
Παραγωγή
1 2 3 Traceback (τελευταία τελευταία κλήση): Αρχείο ", γραμμή 23, στο αρχείο" ", γραμμή 11, στο __επόμενο__ StopIteration
Παράδειγμα 3: iter () με παράμετρο sentinel
class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x)
Παραγωγή
2 4 8
Εδώ, έχουμε εφαρμόσει ένα προσαρμοσμένο επαναλαμβανόμενο αντικείμενο χωρίς StopIteration
συνθήκη.
Ωστόσο, μπορούμε να χρησιμοποιήσουμε τη iter()
μέθοδο με την sentinel
παράμετρο για να σταματήσουμε την επανάληψη. Εάν η τιμή που επιστρέφεται __next__()
είναι ίση με sentinel
, StopIteration
θα αυξηθεί, διαφορετικά η τιμή θα επιστραφεί.
Προτεινόμενη ανάγνωση: Python Iterators