מבני נתונים בפייתון – רשימות

מבני נתונים

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

אפשר לחלק את טיפוסי הנתונים בפייתון לשני סוגים:

  • טיפוסים פשוטים – מאפשרים למשתנה להכיל ערך אחד בלבד.
  • טיפוסים מורכבים – מאפשרים למשתנה להכיל כמות בלתי מוגבלת של ערכים.

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

מבני הנתונים הפשוטים והשימושיים ביותר בפייתון נקראים רשימות.

מה זה רשימה?

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

יצירת רשימה עם ערכים

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

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

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

פעולות חישוביות על רשימות

ביצוע של פעולות חשבוניות פשוטות על רשימות הן חסרות משמעות ויובילו לשגיאה

יוצאת מהכלל היא פעולת הכפל אשר תשכפל את הערכים ברשימה ותיצור מהם רשימה אחת גדולה

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

חיתוך רשימות בעזרת Slicers

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

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

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

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