פייתון/פייתון גרסה 2/טאפל

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

טאפלים (n-יות סדורות) בפייתון דומות לרשימות בלתי ניתנות לשינוי.

הגדרת טאפל[עריכה]

טאפל (tuple) בפייתון הוא עצם מהצורה:

(<elements>)

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

(1, 2, 3)

הוא טאפל של מספרים שלמים, ולעומת זאת

('Hello', 'world')

הוא טאפל של מחרוזות. טאפל לא חייב להיות הומוגני. הנה טאפל שחלק מאיבריו מספרים, וחלקם מחרוזות:

('Hello', 1, 2.2, 'world')


כדאי לדעת:

* הטאפלים הנפוצים ביותר בשימוש הן בעלות שני איברים או שלושה איברים. נקרא לטאפלים אלו זוגות ושלישיות, בהתאמה.
  • על מנת ליצור טאפל עם איבר יחיד, יש להוסיף "פסיק": a=('one',).

דמיון ושוני לרשימות[עריכה]

טאפל דומה לרשימה בכך שניגשים לאיברי כל אחד מהם באותה צורה. לדוגמה:

>>> a = [1, 2, 3]
>>> b = (1, 2, 3)
>>> a[0]
1
>>> b[0]
1

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

>>> shopping=('milk','bread')
>>> 'juice' in shopping
False
>>> for product in shopping:
...     print product
...
milk
bread

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

>>> 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

המרות בין טאפלים ורשימות[עריכה]

אפשר להמיר רשימה לטאפל על ידי כתיבת

tuple(<lst>)

כאשר lst היא רשימה. מצד שני, אפשר להמיר טאפל לרשימה על ידי כתיבת

list(<tp>)

כאשר tp הוא טאפל.

לדוגמה:

>>> 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]

טאפלים וקישורים[עריכה]

בפייתון/פייתון גרסה 2/במקום משתנים - עצמים ושמות, ראינו שאפשר לקשור שמות לעצמים. פייתון גם מאפשר לקשור טאפלים של שמות לטאפלים של עצמים. במקרה זה, כל שם מקושר לעצם המקביל אליו.

נתבונן, לדוגמה, בקוד הבא:

>>> (a, b) = (2, 3)

הקוד פשוט קושר את a ל-2, ואת b ל-3. הוא למעשה מהווה קיצור של הקוד הבא:

>>> a = 2
>>> b = 3

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

>>> a, b = 2, 3

כפי שראינו בקישור בו-זמני, אפשר להשתמש בזאת כדי להחליף קישורים:

>>> a = 'Hello'
>>> b = 'world!'
>>> a, b = b, a

טאפלים ולולאות[עריכה]

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

>>> a = [(2, 3), (4, 5), (10, 11)]
>>> for i in a:
...    print i
(2, 3)
(4, 5)
(10, 11)

מקשרת את השם a לכל זוג.

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

>>> a = [(2, 3), (4, 5), (10, 11)]
>>> for (x, y) in a:
...    print x
2
4
10

מקשרת את הזוג (x, y) לכל זוג עצמים.

שימוש בפונקציות[עריכה]

שקלו לדלג על נושא זה

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



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

לדוגמה, נניח שאנו רוצים לכתוב פונקציה 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)

כפי שראינו באופרטור התניה, ניתן לכתוב את הפוקנציה בקיצור יותר כך:

def min_and_max(a, b)
    return (b, a) if a > b else (a, b)


- טאפל -