מירי
כיתה ח · תכנות בפייתון

רשימות בפייתון הרבה ערכים במשתנה אחד

רשימה שומרת כמה ערכים לפי הסדר: ציונים, שמות של שלבים, טמפרטורות. ניגשים לכל ערך לפי המקום שלו, ומתחילים לספור מ-0. כאן מזיזים את האינדקס, רואים איזה ערך נבחר, ומגלים מה קורה כשיוצאים מהרשימה. כדאי להכיר קודם את הלולאות בפייתון, ואחר כך לעבור למציאת באגים.

1

הרעיון

scores = [7, 9, 4, 8]
print(scores[0])      # 7
print(scores[-1])     # 8
print(len(scores))    # 4
scores.append(10)     # [7, 9, 4, 8, 10]

יוצרים וסופרים מ-0

רשימה כותבים בסוגריים מרובעים, עם פסיקים. המקום של כל ערך נקרא אינדקס. הראשון הוא 0, השני 1, וכן הלאה.

אינדקס שלילי ו-len

scores[-1] הוא האחרון, scores[-2] הלפני אחרון. len(scores) אומר כמה ערכים יש.

append ולולאה

append מוסיף ערך לסוף. for s in scores: עובר על כל הערכים לפי הסדר, ובכל סיבוב s הוא הערך הבא.

לזכור: ברשימה עם 5 ערכים האינדקסים הם 0 עד 4. אינדקס 5 כבר מחוץ לרשימה ונותן IndexError.
2

מעבדה: אורך, אינדקס ומה שביניהם

המחוון הראשון קובע כמה ציונים יש ברשימה, והשני קובע איזה אינדקס מדפיסים בסוף. מעל כל תא כתוב האינדקס שלו, ומתחת האינדקס השלילי. לחצו "שורה הבאה" כדי לעקוב.

נסו את אלה:

הריצו בעצמכם

אפשר לשנות את הקוד ולהריץ פייתון אמיתי. בפעם הראשונה הטעינה לוקחת כמה שניות.

3

טעויות שכולם עושים

הראשון הוא 0, לא 1

כדי לקבל את הערך הראשון כותבים 0.

✗ מקבלים את השני

print(scores[1])

✓ הראשון

print(scores[0])

len הוא לא אינדקס

ברשימה באורך 4 אין אינדקס 4. האחרון הוא len פחות 1, או פשוט 1-.

✗ IndexError

print(scores[len(scores)])

✓ האחרון

print(scores[-1])

append עם סוגריים

append היא פעולה של הרשימה. כותבים נקודה, append, וסוגריים עגולים.

✗ לא עובד

scores.append = 10
scores + 10

✓ מוסיף לסוף

scores.append(10)

מקסימום שמתחיל ב-0

אם כל הערכים שליליים, 0 ינצח בטעות. מתחילים מהערך הראשון ברשימה.

✗ עלול לטעות

best = 0

✓ בטוח

best = temps[0]
4

דוגמה פתורה: הטמפרטורה הגבוהה ביותר

יש רשימה של טמפרטורות, ומוסיפים לה עוד מדידה. איך מוצאים את הגבוהה ביותר בלי max? שומרים את "הכי גבוה עד עכשיו", ובכל סיבוב בודקים אם הערך הנוכחי גבוה ממנו.

5

תרגול


  

6

שאלות שכולם שואלים

למה ברשימה בפייתון מתחילים לספור מ-0?

האינדקס אומר כמה צעדים זזים מתחילת הרשימה. הערך הראשון נמצא בהתחלה, אפס צעדים ממנה, ולכן האינדקס שלו 0. כך זה ברוב שפות התכנות. נסו במעבדה.

מה זה IndexError: list index out of range?

זו השגיאה שפייתון נותנת כשמבקשים אינדקס שאין ברשימה. ברשימה באורך 3 האינדקסים הם 0, 1, 2, וגם 1-, 2-, 3-. כל מספר אחר נותן את השגיאה הזו.

מה ההבדל בין רשימה למערך?

בהרבה שפות קוראים לזה מערך. בפייתון זו רשימה, והיא גמישה: אפשר להוסיף לה ערכים עם append, והיא גדלה לבד. תרגלו למטה.