אז עבדת עם רשימה או מערך ב- Python וכנראה שניסית לחתוך אותו. אבל במקום התוצאה הצפויה, אתה מקבל שגיאה שאומרת, "אינדקס רשימת מחוץ לטווח." אל דאגה, זה יכול לקרות לכל אחד.
הבה נחקור מה המשמעות של שגיאה זו, הגורם לה וכיצד להסיר אותה ללא עיכובים נוספים.
מה המשמעות של שגיאת "אינדקס הרשימה מחוץ לטווח" ב-Python?
כאשר Python זורק שגיאת "אינדקס רשימה מחוץ לטווח", זה אומר שניסית לחתוך את הרשימה מעבר לאינדקס האחרון שלה.
Python מזהה כל פריט ברשימה לפי האינדקס שלו. והאינדקס של רשימה מתחיל מאפס. לדוגמה, כאשר יש לך רשימה עם חמישה פריטים, הפריט הראשון שלה נמצא באינדקס אפס, בעוד שהאחרון נמצא באינדקס הרביעי.
לדוגמה, ברשימה של חמש שפות תכנות:
שפות = ["Python", "Go", "PHP", "C", "Perl"]
האינדקס עבור הרשימה לעיל הוא בין אפס לארבע. אז הניסיון לחתוך אותו כדי להדפיס את הפריט החמישי כפי שמוצג להלן נותן שגיאה:
הדפס (שפות[5])
תְפוּקָה:
IndexError: אינדקס רשימה מחוץ לטווח
בדוגמה שלמעלה, Python מנסה לחפש את האינדקס החמישי ברשימה, וכאשר הוא לא מוצא אותו, הוא זורק את שגיאת אינדקס הרשימה. הסיבה לכך היא שהאלמנט הראשון (Python) נמצא באינדקס אפס, בעוד שהאחרון (Perl) נמצא באינדקס ארבע.
זה הבסיס לשגיאת "אינדקס הרשימה מחוץ לטווח". כאמור, Python זורק אותו בכל פעם שאתה מנסה לחתוך רשימה מעבר לאינדקס האחרון שלה.
כיצד להסיר את השגיאה "אינדקס הרשימה מחוץ לטווח" ב-Python
אז איך אתה יכול להסיר את השגיאה הזו? זה קל.
בהמשך לסעיף הקודם לעיל, ניתן להדפיס את האינדקסים באמצעות א ללולאה בהבנת רשימה:
indexes = [languages.index (i) עבור i בשפות]
הדפס (אינדקסים)
תְפוּקָה:
[0, 1, 2, 3, 4]
האינדקס של רשימה הוא הבסיס לחיתוך בתכנות. אז מכיוון שאתה יודע את האינדקס הגבוה ביותר של הרשימה עבור הפלט למעלה (4), אתה יכול לפענח את מגבלת הפרוסות.
לפיכך, כדי לחתוך את הרשימה ולקבל את הפריט האחרון:
הדפס (שפות[4])
תְפוּקָה:
פרל
כעת הוא מוציא את התוצאה הנכונה.
מה אם אתה רוצה לעבור בלולאה ברשימה באמצעות האינדקס שלה?
חוץ מהרגיל פייתון עבור לולאה, אתה יכול גם להשתמש במושג האינדקס כדי לחזור על רשימה. אמנם שיטה זו עשויה להיראות מפרכת, אך לפעמים היא בלתי נמנעת. לדוגמה, זה שימושי אם אתה רוצה למיין רשימה בסדר הפוך.
שיטה זו פועלת על ידי הגדרת אינדקס ראשוני והגדלה או הקטנה שלו באחד עד לאינדקס הזמין האחרון.
להדפסת הפריטים עם מספר אינדקס הולך וגדל (הפריט הראשון עד האחרון), לדוגמה:
אינדקס = 0 # אינדקס ראשוני
עבור i בשפות:
הדפס (שפות[אינדקס])
אינדקס +=1
תְפוּקָה:
פִּיתוֹן
ללכת
PHP
ג
פרל
אבל מה קורה אם אתה מגדיר את המדד הראשוני לאחד במקום לאפס? תסתכל:
אינדקס = 1 # אינדקס ראשוני
עבור i בשפות:
הדפס (שפות[אינדקס])
אינדקס +=1
תְפוּקָה:
ללכת
PHP
ג
פרל
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 # אינדקס ראשוני
עבור i בשפות:
הדפס (שפות[אינדקס])
אינדקס +=1 #הגדל את האינדקס באחד עבור כל איטרציה
כדי ליישם תפיסה זו להוצאת הפריטים בסדר הפוך, תצטרך להחסיר אחד מאורך המערך. אז זה מאלץ את המדד להתחיל מארבע ולספור לאחור לאינדקס הראשון, אפס.
זה מועיל אם אינך בטוח לגבי ערך האורך של הרשימה המגיע ממקור, למשל, מסד נתונים.
הנה דוגמה:
index = (len (שפות)-1)
עבור i בשפות:
הדפס (שפות[אינדקס])
אינדקס -=1 #הקטין את האינדקס באחד עבור כל איטרציה
תְפוּקָה:
פרל
ג
PHP
ללכת
פִּיתוֹן
אבל אי הפחתה של אחד מאורך הרשימה זורק את השגיאה "אינדקס הרשימה מחוץ לטווח":
index = (len (שפות)-1)
עבור i בשפות:
הדפס (שפות[אינדקס])
אינדקס -=1
תְפוּקָה:
IndexError: אינדקס רשימה מחוץ לטווח
הקוד לעיל זורק שגיאת אינדקס מכיוון שאורך הרשימה הוא חמישה, והוא מנסה להתחיל באינדקס מחמש לאפס, בעוד שהאינדקס הגבוה ביותר הוא ארבע. אז זה אומר שלרשימה אין אינדקס חמישי (פריט שישי).
קבל רשימות טיפול יצירתי ב-Python
השגיאות של פייתון הן ידידותיות לאדם ובדרך כלל ניתנות לקריאה. תמיד, זה הופך אותם לניתנים למעקב במידה סבירה.
כפי שלמדת, הסרת שגיאת אינדקס הרשימה מחוץ לטווח היא די קלה. אם אתה מתמודד עם שגיאה זו בתוכניות העתידיות שלך, ללא קשר למידת המורכבות של הרשימה, תוכל ליישם את המושגים שהוסברו בפוסט זה כדי לפתור את הבעיה.
אתה מוזמן להיות יצירתי עם רשימות מורכבות. אולי תרצה גם ללמוד כיצד למיין רשימות ב- Python בזמנך הפנוי כדי להבין טוב יותר את הכל.
רשימות עם מספר סוגי נתונים יכולות לצאת משליטה במהירות. הנה איך למיין אותם עם Python.
קרא הבא
- תִכנוּת
- פִּיתוֹן
- תִכנוּת
- טיפים לקידוד

Idowu נלהב מכל דבר טכנולוגי ופרודוקטיביות חכמה. בזמנו הפנוי הוא משתעשע בקידוד ועובר ללוח השחמט כשהוא משועמם, אבל הוא גם אוהב להתנתק מהשגרה מדי פעם. התשוקה שלו להראות לאנשים את הדרך סביב הטכנולוגיה המודרנית מניעה אותו לכתוב יותר.
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
לחץ כאן כדי להירשם