Η Python υποστηρίζει πολλά επαναληπτικά αντικείμενα: οι λίστες, οι πλειάδες και οι συμβολοσειρές είναι μόνο μερικά. Ο βρόχος for Python είναι αρκετά ευέλικτος ώστε να χειρίζεται αυτά τα αντικείμενα με ευκολία. Συγκεκριμένα, σας γλιτώνει από το να ασχοληθείτε μόνοι σας με τον αριθμητικό δείκτη κάθε καταχώρισης.
Αλλά μερικές φορές, θα θέλετε να εργαστείτε με ένα ευρετήριο, για να μετρήσετε ή να φιλτράρετε στοιχεία σε μια συλλογή, για παράδειγμα. Μάθετε πώς μπορείτε να χρησιμοποιήσετε τη συνάρτηση απαρίθμησης Python για επανάληψη σε μια ακολουθία, ενώ παρακολουθείτε τόσο το ευρετήριο όσο και το στοιχείο.
Επανάληψη χωρίς απαρίθμηση()
Εξετάστε την ακόλουθη λίστα Python.
my_fruits = ["μήλα", "αχλάδια", "μπανάνες"]
Ας υποθέσουμε ότι θέλετε να παρακολουθείτε τον αριθμό κάθε στοιχείου στη λίστα. Θα μπορούσες χρησιμοποιήστε έναν βρόχο for με εύρος() λειτουργούν έτσι.
καταμέτρηση = 0
Για καρπός σε σειρά (len (my_fruits)):
εκτύπωση (count, my_fruits[count])
μετρήστε += 1
Αν και αυτό λειτουργεί, έχει μερικές αδυναμίες:
- Πρέπει να παρακολουθείτε την καταμέτρηση εκτός του βρόχου.
- Πρέπει να αυξήσετε το πλήθος σε κάθε επανάληψη.
- Πρέπει να υπολογίσετε το μήκος του βρόχου.
- εύρος (len()) λειτουργεί μόνο με μετρήσιμα, ευρετηριάσιμα αντικείμενα.
Υπάρχει μια καλύτερη λύση: η συνάρτηση enumerate().
Πώς λειτουργεί η enumerate() στην Python
Η Python απαριθμώ() Η συνάρτηση παίρνει μια συλλογή δεδομένων και επιστρέφει ένα αντικείμενο απαρίθμησης. Το αντικείμενο απαρίθμησης περιέχει έναν μετρητή ως κλειδί για κάθε στοιχείο που περιέχει το αντικείμενο. ο απαριθμώ() η συνάρτηση το κάνει αναθέτοντας σε κάθε στοιχείο μια καταμέτρηση. Αυτή η μέτρηση αντιστοιχεί στον αριθμό των επαναλήψεων που έχει ολοκληρώσει η συνάρτηση για να φτάσει σε αυτήν την τιμή.
Αυτός ο μετρητής διευκολύνει την πρόσβαση στα αντικείμενα της συλλογής ή ακόμα και τη μετάλλαξη της συλλογής όπου είναι δυνατόν.
Με απαριθμώ(), δεν χρειάζεται να παρακολουθείτε το μήκος του βρόχου ή τον αριθμό των επαναλήψεων. Μπορείτε επίσης να αποφύγετε τη ρητή πρόσβαση στην τιμή χρησιμοποιώντας τον τελεστή ευρετηρίου, όπως φρούτα[count]. Η λειτουργία απαρίθμησης χειρίζεται αυτόματα όλες αυτές τις λειτουργίες.
Η σύνταξη της Python enumerate()
Παρακάτω είναι η γενική σύνταξη για τη συνάρτηση enumerate().
απαρίθμηση (επαναληπτική, έναρξη=0)
Η enumerate() παίρνει δύο ορίσματα:
- iterable: μια συλλογή δεδομένων ή μια ακολουθία που η Python μπορεί να επαναλάβει. Π.χ. μια λίστα ή πλειάδα.
- start: ο δείκτης από τον οποίο πρέπει να αρχίσει να μετράει η συνάρτηση απαρίθμησης.
Πώς υλοποιείται η enumerate().
Για να καταλάβετε πώς απαριθμώ() λειτουργεί, ας δούμε πώς εφαρμόζεται πραγματικά.
defαπαριθμώ(ακολουθία, έναρξη=0):
n = έναρξη
Για στοιχ σε αλληλουχία:
απόδοση παραγωγής n, elem
n += 1
Αυτή η λειτουργία, την οποία μπορείτε να βρείτε στο Τεκμηρίωση απαρίθμησης Python, παίρνει μια ακολουθία και ένα όρισμα έναρξης το οποίο είναι από προεπιλογή 0.
Στη συνέχεια, η συνάρτηση αρχικοποιεί τη μεταβλητή n στη μεταβλητή έναρξης. Αυτό παρακολουθεί τον αριθμό των επαναλήψεων.
Στον βρόχο for που ακολουθεί για κάθε στοιχείο της ακολουθίας,
- απόδοση παραγωγής διακόπτει την εκτέλεση του βρόχου.
- Επιστρέφει επίσης το τρέχον πλήθος (n) και την τιμή (elem).
- Όταν ο βρόχος συνεχίσει, αυξάνεται το n.
Η επιστρεφόμενη τιμή είναι αντικείμενο ζευγών κλειδιού-τιμής.
Αν καλούσατε το απαριθμώ() λειτουργία και περάστε τη τη λίστα των φρούτων, αυτή θα ήταν η τιμή εξόδου.
my_fruits = ["μήλα", "αχλάδια", "μπανάνες"]
enumerate_object = απαρίθμηση (my_fruits)
εκτύπωση (λίστα (numerate_object))
# έξοδος - [(0, 'μήλα'), (1, 'αχλάδια'), (2, 'μπανάνες')]
Απαριθμήστε με διαφορετικό αρχικό ευρετήριο
Στο παραπάνω παράδειγμα, δεν καθορίσαμε τον αρχικό δείκτη. Το παρακάτω παράδειγμα σάς δείχνει πώς μπορείτε να ορίσετε τον αρχικό δείκτη σε έναν αριθμό της επιλογής σας.
Για να ξεκινήσετε στις 10, κάντε τα εξής.
enumerate_object = απαρίθμηση (my_fruits, 10)
εκτύπωση (λίστα (numerate_object))
# έξοδος - [(10, 'μήλα'), (11, 'αχλάδια'), (12, 'μπανάνες')]
Παραδείγματα Python enumerate().
Ακολουθούν μερικά παραδείγματα που δείχνουν πώς μπορείτε να χρησιμοποιήσετε απαριθμώ() στην Python.
Αριθμήστε μια συμβολοσειρά Python
Σε αυτό το παράδειγμα, θα χρησιμοποιήσετε το enumerate για να ανακτήσετε το γράμμα στο ευρετήριο 5:
my_string = "makeuseof"
Για καταμέτρηση, αξία σε απαρίθμηση (my_string):
αν καταμέτρηση == 5:
Τυπώνω (αξία)
# έξοδος - s
Αριθμήστε μια πλειάδα Python
Μπορείτε επίσης να χρησιμοποιήσετε απαριθμώ() να επαναλάβω πάνω από α Πλειάδα Python. Σε αυτό το παράδειγμα, το πρόγραμμα εκτυπώνει μια κεφαλίδα στην πρώτη επανάληψη, πριν εμφανίσει τα στοιχεία.
my_fruits_tuple = ("μήλα", "αχλάδια", "μπανάνες")
Για δείκτης, τιμή σε απαρίθμηση (my_fruits_tuple):
αν (ευρετήριο == 0):
εκτύπωση ("Φρούτα:")εκτύπωση (τιμή)
/*
Φρούτα:
μήλα
αχλάδια
μπανάνες
*/
Αριθμήστε μια λίστα Python
Στο παρακάτω παράδειγμα, χρησιμοποιείτε την απαρίθμηση για να μειώσετε όλους τους αριθμούς στη λίστα πάνω από 10 επί 2.
my_number_list = [10, 17, 15, 6]
Για δείκτης, τιμή σε απαρίθμηση (my_number_list):
αν (τιμή > 10):
my_number_list[ευρετήριο] -= 2εκτύπωση (my_number_list)
# έξοδος - [10, 15, 13, 6]
Χρησιμοποιήστε το enumerate για να μετρήσετε τους επαναληπτικούς σας αριθμούς
Η Python περιλαμβάνει απαριθμώ() ως ενσωματωμένη λειτουργία. Μπορείτε να το χρησιμοποιήσετε για να επαναλάβετε και να μετρήσετε στοιχεία σε μια επαναληπτική συλλογή, όπως λίστα, πλειάδα ή συμβολοσειρά. Μπορεί να σας βοηθήσει να παρακολουθείτε το πραγματικό ευρετήριο κάθε στοιχείου, αλλά μπορείτε επίσης να καθορίσετε το δικό σας αρχικό ευρετήριο. Χρησιμοποιήστε το ως εναλλακτική λύση στο εύρος() λειτουργεί εάν εργάζεστε με αντικείμενα που δεν είναι μετρήσιμα και ευρετηριάσιμα αντικείμενα.