רשומות – רשימות בלתי משתנות
(Tuples)
בפיתון ישנו טיפוס נתונים בסיסי נוסף
שנקרא tuple, ומהווה רשימה בלתי משתנה (immutable list). מרגע יצירת רשימה כזו, לא ניתן עוד לשנות את תכנה
בשום צורה – אך ניתן לגשת אליו למטרת קריאה.
בשפה העברית אין תרגום מדויק למילה
tuple. בחרנו להשתמש במילה הקרובה ביותר והיא "רשומה",
שתרגומה בדר"כ הוא record. יש לשים לב
שהתרגום הוא לצורך נוחות בלבד, ואין בו כדי לרמוז על קשר ממשי בין
ה-tuple בפיתון לבין ה-record בפסקל (אם כי יש דמיון
אסוציאטיבי בין השניים).
הגדרת רשומה
>>> t
= ("a", "b", "mpilgrim", "z", "example") >>>
t ('a', 'b',
'mpilgrim', 'z', 'example') >>>
t[0] 'a' >>>
t[.1] 'example' >>>
t[1:3] ('b',
'mpilgrim')
העבירו את הסמן מעל השורות המסומנות לקבלת
הסברים
רשומה מוגדרת בדומה לרשימה על ידי
כתיבת האיברים מופרדים בפסיקים, אולם בתוך סוגריים עגולים במקום
מרובעים.
כמו ברשימות, גם אברי רשומות הם
סדורים, ובעלי מספרים סידוריים שבאמצעותם ניתן לגשת אליהם – אם כי
למטרות קריאה בלבד.
רשומות תומכות גם באינדקסים
שליליים, בדומה לרשימות רגילות.
ניתן ליצור תתי רשומות באותו האופן
בו יצרנו תתי רשימות.
רשומה בעלת אלמנט יחיד תוגדר על ידי
הוספת פסיק אחרי האלמנט, כדי למנוע ערפול או בלבול עם סוגריים רגילים.
באופן כללי, תמיד ניתן להוסיף פסיק אחד "מיותר", גם אם יש יותר מאשר
איבר אחד ברשימה או רשומה.
t =
(“element”,)
לרשומות אין מתודות!
רשומות הן טיפוס נתונים בלתי משתנה
(immutable) וככזה אין אפשרות לשנותו לאחר
הגדרתו.
מתודות נועדו לפעול על האובייקט ממנו
הן פועלות. בפיתון בחרו לא לאפשר להפעיל מתודות של רשומות למרות שהן,
ככל דבר בפייתון, אובייקט לכל דבר.
>>>
t ('a', 'b',
'mpilgrim', 'z', 'example')
>>>
t.append("new") Traceback
(innermost last): File
"<interactive input>", line 1, in ? AttributeError:
'tuple' object has no attribute 'append' >>>
t.remove("z") Traceback
(innermost last): File
"<interactive input>", line 1, in ? AttributeError:
'tuple' object has no attribute 'remove' >>>
t.index("example") Traceback
(innermost last): File
"<interactive input>", line 1, in ? AttributeError:
'tuple' object has no attribute 'index'
>>>
"z" in
t
1
העבירו את הסמן מעל השורות המסומנות לקבלת
הסברים
אי אפשר להוסיף משתנים
לרשומה.
אי אפשר להסיר איברים
מרשומה.
לרשומה אין מתודת index.
למרות כל זאת - יש אפשרות
להשתמש באופרטור in על רשומות,
בדומה לרשימות רגילות.
לשם מה, אם כן, צריך בכלל
רשומות?
- ראשית, רשומות מהירות יותר מאשר
רשימות. אם את/ה זקוק/ה לרשימה קבועה של ערכים מבלי צורך לשנותה,
עדיף להשתמש ברשומות.
- רשומות יכולות להיות מפתחות
של מילון, בניגוד לרשימות.
- רשומות משמשות ביצירת תבניות של
מחרוזות, כפי שנראה בהמשך.
הערה: ניתן להפוך רשימות לרשומות
ולהיפך. הפונקציה tuple(somelist) מקבלת רשימה ומחזירה רשומה המכילה את אותם אברים,
והפונקציה list(sometuple) בהתאם מקבלת רשומה ומחזירה רשימה המכילה את אותם
האיברים.
|