Python iter ()

Η συνάρτηση 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

ενδιαφέροντα άρθρα...