רשימות

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

יצירת רשימה#

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

אורך רשימה - ()len#

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

גישה לאיבר בודד ברשימה#

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

🔔 חשוב חשוב חשוב 🔔

בפייתון הספירה מתחילה ב-0 עבור האיבר הראשון ברשימה, ולכן האיבר האחרון ברשימה יהיה באינדקס len(list)-1.

בואו נראה כמה דוגמאות לגישה לאיבר ברשימה:

אפשר לראות שאם נכניס אינדקס גדול מדי נקבל שגיאה:

שינוי איבר ברשימה#

ניתן לבצע השמה של איבר ברשימה ובכך לשנות את הרשימה עצמה. הנה דוגמא:

גישה לאיבר מסוף הרשימה#

סינטקס נוסף לספירת האינדקסים של הרשימה נעזר במספרים שליליים, כאשר 1- הוא אינדקס האיבר האחרון ברשימה, 2- הוא אינדקס האיבר הלפני אחרון ברשימה, וכך הלאה:

גישה לאיברים בעזרת לולאת while#

עכשיו כשאנחנו יודעים איך לגשת לאיבר בודד ויודעים את אורך הרשימה אנחנו יכולים לגשת לכל האיברים אחד-אחד בעזרת לולאה:

חיתוך רשימה#

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

המשתנה start מציין את האינדקס של תחילת תת הרשימה. המשתנה end מציין את האינדקס לסיום תת הרשימה, לא כולל האינדקס עצמו.

בואו נבחן כמה דוגמאות כדי להבין את המושג בצורה טובה יותר.

דוגמה 1#

נניח שיש לנו רשימת מספרים בשם numbers המכיל את המספרים 1-10, ואנחנו רוצים לחלץ תת רשימה הכוללת את הפריטים מאינדקס 2 עד 6.

שימו לב

רצינו איברים באינדקסים 2-6 (2,3,4,5,6) ולכן כתבנו את האינדקסים בקצוות הרשימה מ-2 עד 7, מכיוון שאינדקס הסיום אינו כלול בתת הרשימה!

דוגמא 2#

נוכל לגשת לאיברים ברשימה גם בעזרת אינדקסים שליליים כפי שראינו קודם:

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

כתיב מקוצר לחיתוך רשימה#

אם אנחנו רוצים לגשת לאיבר הראשון הראשון ברשימה כחלק מתת הרשימה שלנו, ישנה דרך מקוצרת לכתוב זאת:

הנה דוגמא:

בצורה דומה אם נרצה לגשת עד האיבר האחרון, הכתיב המקוצר יראה כך:

הנה דוגמא:

חיתך רשימה עם דילוג#

אפשר גם להשתמש בפרמטר המשתנה step כדי לקבוע גודל צעד לדילוג בין איבר לאיבר:

דוגמא 1#

בואו נחלץ כל פריט שני מתוך הרשימה מאינדקס 1 עד 9.

דוגמא 2#

בואו נחלץ כל פריט רביעי מתוך הרשימה כאשר נרוץ על כל האיברים

בצורת הכתיב המקוצר אין צורך לכתוב את אינדקס ההתחלה או אינדקס הסיום והדיפולט שלהם הוא התחלת וסוף הרשימה

היפוך רשימה#

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

תרגילים#

תרגיל 1- slicing#

שנה בכל שורה את ההדפסה כך שיתקבל מה שרשום בתיאור.

תרגיל 2- שנה את הרשימה#

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

דוגמאת הדפסה:

Enter a number for index 0: a
Invalid input. Enter a non-negative number.
Enter a number for index 0: 1
Enter a number for index 1: 2
Enter a number for index 2: -1
Invalid input. Enter a non-negative number.
Enter a number for index 2: 3
Enter a number for index 3: 4
Enter a number for index 4: 5
List: [1, 2, 3, 4, 5]
First number: 1
Last number: 5