פייתון/n-יות
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
n-יות בפייתון דומות לרשימות בלתי ניתנות לשינוי.
תוכן עניינים |
[עריכה] הגדרת n-יה
n-יה (tuple) בפייתון היא עצם מהצורה:
(<elements>)
כאשר elements היא איבר או יותר מופרדים על ידי פסיקים. לדוגמה,
(1, 2, 3)
היא n-יה של מספרים שלמים, ולעומת זאת
('Hello', 'world')
היא n-יה של מחרוזות. n-יה לא חייבת להיות הומוגנית. הנה n-יה שחלק מאיבריה מספרים, וחלקם מחרוזות:
('Hello', 1, 2.2, 'world')
[עריכה] דמיון ושוני לרשימות
n-יה דומה לרשימה בכך שניגשים לאיברי כל אחת מהן באותה צורה. לדוגמה:
>>> a = [1, 2, 3] >>> b = (1, 2, 3) >>> a[0] 1 >>> b[0] 1
כמו כן, בדומה לרשימות, ניתן לבדוק שייכות ל-n-יה באמצעות האופרטור in:
>>> shopping=('milk','bread') >>> 'juice' in shopping False >>> for product in shopping: ... print product ... milk bread
השוני העיקרי הוא שרשימה היא עצם הניתן לשינוי, וn-יה איננה ניתנת לשינוי. לדוגמה:
>>> a = [1, 2, 3] >>> b = (1, 2, 3) >>> a[0] = 13 >>> b[0] = 13 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
[עריכה] המרות בין n-יות ורשימות
אפשר להמיר רשימה לn-יה על ידי כתיבת
tuple(<lst>)
כאשר lst היא רשימה. מצד שני, אפשר להמיר n-יה לרשימה על ידי כתיבת
list(<tp>)
כאשר tp היא n-יה.
לדוגמה:
>>> a = [1, 2, 3] >>> b = (1, 2, 3) >>> a_as_tuple = tuple(a) >>> b_as_list = list(b) >>> a_as_tuple (1, 2, 3) >>> b_as_list [1, 2, 3]
[עריכה] n-יות וקישורים
בפייתון/במקום משתנים - עצמים ושמות, ראינו שאפשר לקשור שמות לעצמים. פייתון גם מאפשר לקשור n-יות של שמות לn-יות של עצמים. במקרה זה, כל שם מקושר לעצם המקביל אליו.
נתבונן, לדוגמה, בקוד הבא:
>>> (a, b) = (2, 3)
הקוד פשוט קושר את a ל-2, ואת b ל-3. הוא למעשה מהווה קיצור של הקוד הבא:
>>> a = 2 >>> b = 3
כאשר מקשרים n-יות של שמות לn-יות של עצמים, אין אפילו צורך לכתוב את הסוגריים המציינים את הn-יות. אפשר לכתוב את הקוד הקודם כך:
>>> a, b = 2, 3
כפי שראינו בקישור בו-זמני, אפשר להשתמש בזאת כדי להחליף קישורים:
>>> a = 'Hello' >>> b = 'world!' >>> a, b = b, a
[עריכה] n-יות ולולאות
כבר ראינו בלולאת for שאפשר לקשר שם לכל אחד מעצמי רשימה. אם איברי הרשימה הם זוגות (או למעשה n-יה כלשהי), השם יקושר לכל זוג. לדוגמה:
>>> a = [(2, 3), (4, 5), (10, 11)] >>> for i in a: ... print i (2, 3) (4, 5) (10, 11)
מקשרת את השם a לכל זוג.
כאשר אנו יודעים בוודאות שכל איבר ברשימה הוא זוג (או למעשה n-יה כלשהי), נוכל להשתמש במה שראינו בn-יות וקישורים, ולקשור זוג שמות לכל זוג עצמים. לדוגמה:
>>> a = [(2, 3), (4, 5), (10, 11)] >>> for (x, y) in a: ... print x 2 3 10
מקשרת את הזוג (x, y) לכל זוג עצמים.
[עריכה] שימוש בפונקציות
|
שקול לדלג על נושא זה נושא זה מניח שאתה מכיר פונקציות. אם זה אינו המצב, מומלץ לחזור לכאן לאחר שתלמד נושא זה. |
לעתים נתקלים במצב שבו רוצים שפונקציה תחזיר יותר מערך אחד. n-יות נוחות מאד לצורך כך.
לדוגמה, נניח שאנו רוצים לכתוב פונקציה min_and_max המקבלת שני מספרים, ומחזירה את הקטן ראשון, ואת הגדול שני. נוכל לכתוב זאת כך:
def min_and_max(a, b) if a > b: return (b, a) else: return (a, b)
(x, y) = min_and_max(2, 3)
היות שלא חייבים לסמן את הסוגריים כאן, אפשר לכתוב זאת גם כך:
x, y = min_and_max(2, 3)
אגב, כפי שראינו באופרטור התניה, אם ברשותך מתרגם חדיש מספיק (גרסה 2.5 ומעלה), תוכל לכתוב את הפוקנציה בקיצור יותר כך:
def min_and_max(a, b) return (b, a) if a > b else (a, b)
| הפרק הקודם: לולאות |
n-יות | הפרק הבא: מילונים |

