Εργαζόσασταν λοιπόν με μια λίστα ή πίνακα στην Python και πιθανότατα προσπαθήσατε να την τεμαχίσετε. Αλλά αντί για το αναμενόμενο αποτέλεσμα, λαμβάνετε ένα σφάλμα που λέει, "κατάλογος ευρετηρίου εκτός εύρους". Μην ανησυχείς, μπορεί να συμβεί στον καθένα.

Ας διερευνήσουμε τι σημαίνει αυτό το σφάλμα, την αιτία του και πώς να το αφαιρέσετε χωρίς καμία περαιτέρω καθυστέρηση.

Τι σημαίνει το σφάλμα "ευρετήριο λίστας εκτός εύρους" στην Python;

Όταν η Python ρίχνει ένα σφάλμα "ευρετήριο λίστας εκτός εύρους", σημαίνει ότι προσπαθήσατε να τεμαχίσετε τη λίστα πέρα ​​από το τελευταίο ευρετήριό της.

Η Python προσδιορίζει κάθε στοιχείο σε μια λίστα από το ευρετήριό της. Και το ευρετήριο μιας λίστας ξεκινά από το μηδέν. Για παράδειγμα, όταν έχετε μια λίστα με πέντε στοιχεία, το πρώτο της στοιχείο βρίσκεται στο μηδέν ευρετήριο, ενώ το τελευταίο βρίσκεται στο τέταρτο ευρετήριο.

Για παράδειγμα, σε μια λίστα με πέντε γλώσσες προγραμματισμού:

Γλώσσες = ["Python", "Go", "PHP", "C", "Perl"]

Η ευρετηρίαση για την παραπάνω λίστα είναι μεταξύ μηδέν και τέσσερα. Επομένως, όταν προσπαθείτε να το κόψετε σε φέτες για να εκτυπώσετε το πέμπτο αντικείμενο, όπως φαίνεται παρακάτω, εμφανίζεται ένα σφάλμα:

instagram viewer

εκτύπωση (γλώσσες[5])
Παραγωγή:
IndexError: ευρετήριο λίστας εκτός εύρους

Στο παραπάνω παράδειγμα, η Python προσπαθεί να ψάξει για το πέμπτο ευρετήριο στη λίστα και όταν δεν μπορεί να το βρει, ρίχνει το σφάλμα ευρετηρίου λίστας. Αυτό συμβαίνει επειδή το πρώτο στοιχείο (Python) βρίσκεται στον δείκτη μηδέν, ενώ το τελευταίο (Perl) βρίσκεται στον δείκτη τέσσερα.

Αυτή είναι η βάση του σφάλματος "ευρετήριο λίστας εκτός εύρους". Όπως αναφέρθηκε, η Python το ρίχνει κάθε φορά που προσπαθείτε να κόψετε μια λίστα πέρα ​​από το τελευταίο ευρετήριό της.

Πώς να αφαιρέσετε το σφάλμα "ευρετηρίου λίστας εκτός εμβέλειας" στην Python

Πώς μπορείτε λοιπόν να αφαιρέσετε αυτό το σφάλμα; Είναι εύκολο.

Σε συνέχεια της προηγούμενης ενότητας παραπάνω, μπορείτε να εκτυπώσετε τα ευρετήρια χρησιμοποιώντας α Γιαβρόχο σε μια κατανόηση λίστας:

indexes = [languages.index (i) για το i στις γλώσσες]
εκτύπωση (ευρετήρια)
Παραγωγή:
[0, 1, 2, 3, 4]

Το ευρετήριο μιας λίστας είναι η βάση του τεμαχισμού στον προγραμματισμό. Εφόσον λοιπόν γνωρίζετε τον υψηλότερο δείκτη της λίστας για την έξοδο παραπάνω (4), μπορείτε να αποκρυπτογραφήσετε το όριο του slice.

Επομένως, για να κόψετε τη λίστα και να λάβετε το τελευταίο στοιχείο:

εκτύπωση (γλώσσες[4])
Παραγωγή:
Perl

Τώρα βγάζει το σωστό αποτέλεσμα.

Τι γίνεται αν θέλετε να κάνετε αναζήτηση στη λίστα χρησιμοποιώντας το ευρετήριό της;

Εκτός από το κανονικό Python για βρόχο, μπορείτε επίσης να χρησιμοποιήσετε την έννοια του ευρετηρίου για επανάληψη μέσω μιας λίστας. Αν και αυτή η μέθοδος μπορεί να φαίνεται επίπονη, μερικές φορές είναι αναπόφευκτη. Για παράδειγμα, είναι χρήσιμο εάν θέλετε να ταξινομήσετε μια λίστα με αντίστροφη σειρά.

Αυτή η μέθοδος λειτουργεί ορίζοντας έναν αρχικό δείκτη και αυξάνοντάς τον ή μειώνοντάς τον κατά ένα μέχρι το τελευταίο διαθέσιμο ευρετήριο.

Για να εκτυπώσετε τα στοιχεία με αυξανόμενο αριθμό ευρετηρίου (από το πρώτο έως το τελευταίο στοιχείο), για παράδειγμα:

δείκτης = 0 # Αρχικό ευρετήριο
for i στις Γλώσσες:
εκτύπωση (Γλώσσες[ευρετήριο])
ευρετήριο +=1
Παραγωγή:
Πύθων
Πηγαίνω
PHP
ντο
Perl

Τι συμβαίνει όμως αν ορίσετε τον αρχικό δείκτη σε ένα αντί για μηδέν; Κοίτα:

δείκτης = 1 # Αρχικό ευρετήριο
for i στις Γλώσσες:
εκτύπωση (Γλώσσες[ευρετήριο])
ευρετήριο +=1
Παραγωγή:
Πηγαίνω
PHP
ντο
Perl
IndexError: ευρετήριο λίστας εκτός εύρους

Στο παραπάνω παράδειγμα, η ευρετηρίαση ξεκινά από το δεύτερο στοιχείο (ευρετήριο ένα, Πηγαίνω). Έτσι, κατά την αύξηση, ο βρόχος δεν σταματά μέχρι να ολοκληρώσει την καταμέτρηση για τα πέντε στοιχεία. Αυτό αναγκάζει τον δείκτη να αυξηθεί κατά ένα μέχρι το τελευταίο στοιχείο.

Ως εκ τούτου, το κομμάτι χτυπά έναν πέμπτο δείκτη που δεν είναι διαθέσιμος. Άρα βγάζει ένα σφάλμα ευρετηρίου. Σημαίνει ότι ο δείκτης αυξάνεται με το ακόλουθο μοτίβο για κάθε στοιχείο:

1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5 

Αντί για το σωστό μοτίβο, που είναι:

0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4

Όπως μπορείτε να δείτε, η υψηλότερη τιμή του παραπάνω δείκτη είναι τέσσερα, η οποία είναι σωστή αφού ο βρόχος αρχίζει να αυξάνει την ευρετηρίαση από το μηδέν.

Επομένως, ο μηδενισμός του αρχικού ευρετηρίου, όπως κάνατε στο πρώτο παράδειγμα αυτής της ενότητας, καταργεί το σφάλμα "ευρετήριο λίστας εκτός εύρους":

δείκτης = 0 # Αρχικό ευρετήριο
for i στις Γλώσσες:
εκτύπωση (Γλώσσες[ευρετήριο])
ευρετήριο +=1 #Αυξήστε το ευρετήριο κατά ένα για κάθε επανάληψη

Για να εφαρμόσετε αυτήν την έννοια για την έξοδο των στοιχείων με αντίστροφη σειρά, θα χρειαστεί να αφαιρέσετε ένα από το μήκος του πίνακα. Έτσι, αυτό αναγκάζει τον δείκτη να ξεκινήσει από το τέσσερα και να μετρήσει αντίστροφα μέχρι τον πρώτο δείκτη, μηδέν.

Αυτό είναι χρήσιμο εάν δεν είστε σίγουροι για την τιμή του μήκους της λίστας που προέρχεται από μια πηγή, για παράδειγμα, μια βάση δεδομένων.

Εδώ είναι ένα παράδειγμα:

ευρετήριο = (len (Γλώσσες)-1)
for i στις Γλώσσες:
εκτύπωση (Γλώσσες[ευρετήριο])
ευρετήριο -=1 #Μειώστε το ευρετήριο κατά ένα για κάθε επανάληψη
Παραγωγή:
Perl
ντο
PHP
Πηγαίνω
Πύθων

Αλλά αν δεν αφαιρέσετε ένα από το μήκος της λίστας, εμφανίζεται το σφάλμα "λίστα εκτός εύρους ευρετηρίου":

ευρετήριο = (len (Γλώσσες)-1)
for i στις Γλώσσες:
εκτύπωση (Γλώσσες[ευρετήριο])
ευρετήριο -=1
Παραγωγή:
IndexError: ευρετήριο λίστας εκτός εύρους

Ο παραπάνω κώδικας δημιουργεί ένα σφάλμα ευρετηρίου επειδή το μήκος της λίστας είναι πέντε και προσπαθεί να ξεκινήσει τη δημιουργία ευρετηρίου από το πέντε στο μηδέν, ενώ ο υψηλότερος δείκτης είναι τέσσερις. Άρα σημαίνει ότι η λίστα δεν έχει πέμπτο ευρετήριο (έκτο στοιχείο).

Λάβετε λίστες δημιουργικού χειρισμού στην Python

Τα σφάλματα της Python είναι φιλικά προς τον άνθρωπο και συνήθως αναγνώσιμα. Πάντα, αυτό τα καθιστά ανιχνεύσιμα σε εύλογο βαθμό.

Όπως έχετε μάθει, η κατάργηση του σφάλματος εκτός εύρους του ευρετηρίου λίστας είναι αρκετά εύκολη. Εάν αντιμετωπίσετε αυτό το σφάλμα στα μελλοντικά σας προγράμματα, ανεξάρτητα από το πόσο περίπλοκη είναι η λίστα, μπορείτε να εφαρμόσετε τις έννοιες που περιγράφονται σε αυτήν την ανάρτηση για να λύσετε το πρόβλημα.

Μη διστάσετε να γίνετε δημιουργικοί με περίπλοκες λίστες. Μπορεί επίσης να θέλετε να μάθετε πώς να ταξινομείτε λίστες σε Python τον ελεύθερο χρόνο σας για να τα έχετε καλύτερα όλα.

Πώς να ταξινομήσετε σχεδόν κάθε τύπο λίστας στην Python

Οι λίστες με πολλούς τύπους δεδομένων μπορούν να ξεφύγουν γρήγορα από τον έλεγχο. Δείτε πώς να τα ταξινομήσετε με την Python.

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Σχετικά θέματα
  • Προγραμματισμός
  • Πύθων
  • Προγραμματισμός
  • Συμβουλές κωδικοποίησης
Σχετικά με τον Συγγραφέα
Idowu Omisola (Δημοσιεύτηκαν 136 άρθρα)

Ο Idowu είναι παθιασμένος με οτιδήποτε έξυπνη τεχνολογία και παραγωγικότητα. Στον ελεύθερο χρόνο του, παίζει με την κωδικοποίηση και μεταβαίνει στη σκακιέρα όταν βαριέται, αλλά του αρέσει επίσης να ξεφεύγει από τη ρουτίνα που και που. Το πάθος του να δείχνει στους ανθρώπους τον τρόπο γύρω από τη σύγχρονη τεχνολογία τον παρακινεί να γράψει περισσότερα.

Περισσότερα από τον Idowu Omisola

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε