טאפלים של פייתון - רשימות שלא ניתן לשנות

מחבר:
בתאריך:

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

את פריטי הרשימה מקיפים סוגריים מרובעים:

my_list = [2, 3, 5, 'a', 'b', 'c', True]

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

ניצור טאפל שיכיל כמה ערכים:

person1 = ('Moshe', 27, 'Israel', 'Python', True)

מה סוג הנתונים?

print(type(person1))
class 'tuple'

מדריך פייתון טאפל טופל tuples

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

print(len(person1))
5

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

name = person1[0]
print(name)
Moshe

וכמו ברשימות ניתן להשתמש במילות המפתח in ו-not in כדי למצוא אם הערך המבוקש נמצא בטאפל:

print('Israel' in person1) # True
print('Israel' not in person1) # False

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

person1[1] = 28
Traceback (most recent call last):
  File "main.py", line 8, in 
    person1[1] = 28
TypeError: 'tuple' object does not support item assignment

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

 

חילוץ נתונים מתוך טאפל

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

person1 = ('Moshe', 27, 'Israel', 'Python', True)
name, age, country, language, has_car = person1

נדפיס את המשתנים:

print('name:', name)
print('age:', age)
print('country:', country)
print('language:', language)
print('has car?:', has_car)
name: Moshe
age: 27
country: Israel
language: Python
has car?: True

מאוד שימושי!

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

מה קורה אם מספר המשתנים נמוך מדי?

name,country = person1
Traceback (most recent call last):
  File "main.py", line 3, in 
    name,country = person1
ValueError: too many values to unpack (expected 2)

שגיאה!! מפני שמספר המשתנים גדול יותר ממספר הפריטים בתוך הטאפל.

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

name, age, country, language, has_car, gender = person1
Traceback (most recent call last):
  File "main.py", line 3, in 
    name, age, country, language, has_car, gender = person1
ValueError: not enough values to unpack (expected 6, got 5)

זה לא עובד!

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

 

מקרה מיוחד: טאפל עם פריט אחד

ננסה להגדיר פריט אחד בלבד בתוך טאפל:

my_numbers = (42)
print(my_numbers)
print('42 + 1 = ', (my_numbers + 1))
42
42 + 1 =  43

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

my_numbers = (42,)
print(my_numbers)
(42,)

מצוין! פייתון מתייחס למשתנה כטאפל.

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

לכל המדריכים בסדרה ללימוד פייתון

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

הוסף תגובה חדשה

 

= 9 + 5

תמונת המגיב

אביגיל בתאריך: 05.02.2020

מהמם